====== XRender ====== **//Inherited from//** [[class::qopenglwidget|QOpenGLWidget]],[[class::xview|XView]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** XRender类从XView继承,是用于三维视图的渲染和用户交互的视图基类,它支持多种渲染模式和显示状态,交互上它支持多种不同的对象选择和拾取方法,以及视图的操作(如旋转、平移、缩放),还支持云图渲染以及变形渲染,以及基于GLSL着色器语言的高级渲染技术。除此以外它还提供了用于指定裁剪平面和局部视图的方法接口以及定制功能专用数据的预览显示接口,可以根据需要显示多种标记。 为了提高渲染速度,XRender首先在帧缓冲区对象中渲染,然后通过纹理渲染到正常渲染上下文中。 XRender为三维场景提供了较完备的渲染以及交互方法,开发者可以从它继承很方便的定制更多专用三维场景的显示与交互。 **//Members//** * #ifndef [[xrender#use_qt4|USE_QT4]] * MainFrame * [[xrender#m_pparapp|m_pParApp]] * QPoint [[xrender#m_qlastpos|m_qLastPos]] * Vector2i [[xrender#m_prevpt|m_PrevPt]] * Vector2i [[xrender#m_curpt|m_CurPt]] * QPoint [[xrender#m_qrubberbandpos|m_qRubberBandPos]] * real [[xrender#m_frotangle[3]|m_fRotAngle[3]]] * real [[xrender#m_dcenter[3]|m_dCenter[3]]] * Matrix4d [[xrender#m_dmodelviewmatrix|m_dModelViewMatrix]] * Matrix4d [[xrender#m_dprojectmatrix|m_dProjectMatrix]] * GLdouble [[xrender#m_dviewbox[6]|m_dViewBox[6]]] * GLint [[xrender#m_iwndwidth|m_iWndWidth]] * GLint [[xrender#m_iwndheight|m_iWndHeight]] * GLuint [[xrender#m_uifboid|m_uiFboId]] * ulong [[xrender#m_ulcurrentshader|m_ulCurrentShader]] * ShaderVarLocation [[xrender#m_svloc|m_SVLoc]] * ulong [[xrender#m_ulglext|m_ulGLExt]] * ulong [[xrender#m_ulenable|m_ulEnable]] * bool [[xrender#m_btexready|m_bTexReady]] * bool [[xrender#m_bencodeready|m_bEncodeReady]] * bool [[xrender#m_bcontextmenuready|m_bContextMenuReady]] * ulong [[xrender#m_ulimagetextureid|m_ulImageTextureID]] * ulong [[xrender#m_ulopflag|m_ulOpFlag]] * ulong [[xrender#m_ulpickentityid|m_ulPickEntityId]] * QElapsedTimer * [[xrender#m_ptimer|m_pTimer]] * ulong [[xrender#m_ulprevtime|m_ulPrevTime]] * double [[xrender#m_dscale|m_dScale]] * QPolygonF * [[xrender#m_polygonpickpts|m_PolygonPickPts]] * unordered_map * [[xrender#m_ptextlabels|m_pTextLabels]] * uint8 [[xrender#m_bgtopcolor[3]|m_BGTopColor[3]]] * uint8 [[xrender#m_bgbotcolor[3]|m_BGBotColor[3]]] * RGBAColor [[xrender#m_textcolor|m_TextColor]] * FBObject [[xrender#m_colorencodefbo|m_ColorEncodeFbo]] * QOpenGLFramebufferObject * [[xrender#m_poverlayfbo|m_pOverlayFbo]] * XVertexBuffer [[xrender#m_vbo[vbo_maxtype]|m_VBO[VBO_MaxType]]] * XArray [[xrender#g_ulcolorencode|g_ulColorEncode]] * XArray [[xrender#g_fdepth|g_fDepth]] * QTimer * [[xrender#m_panimationtimer|m_pAnimationTimer]] * ulong [[xrender#m_scenebegintime|m_SceneBeginTime]] * static float [[xrender#g_foffsetfarest|g_fOffsetFarest]] * static float [[xrender#g_foffsetfar|g_fOffsetFar]] * static float [[xrender#g_foffsetnear|g_fOffsetNear]] * static float [[xrender#g_foffsetnearest|g_fOffsetNearest]] * static ulong [[xrender#g_ulop[op_type_count]|g_ulOp[Op_Type_Count]]] * OpenGLAPI * [[xrender#m_api|m_API]] * GifGenerator [[xrender#m_pgif|m_pGif]] **//Public interface//** * [[xrender#xrender1|XRender]](MainFrame * pParApp, XDocument * doc) * virtual [[xrender#~xrender|~XRender]]() * virtual void [[xrender#onviewdataupdated|onViewDataUpdated]]() * void [[xrender#onanimationframeupdated|onAnimationFrameUpdated]]() * virtual void [[xrender#createcontextmenu|createContextMenu]]() * virtual void [[xrender#setopflag|setOpFlag]](OpType op) * virtual void [[xrender#refresh|refresh]]() * virtual void [[xrender#updateshader|updateShader]]() * virtual void [[xrender#clearshader|clearShader]]() * MainFrame * [[xrender#getframe|getFrame]]() * virtual void [[xrender#updateviewbox|updateViewBox]](const real * range) * void [[xrender#setmodelviewmatrix|setModelViewMatrix]](double *matrix) * void [[xrender#savevisualangle|saveVisualAngle]](XVisualAngle * va) * void [[xrender#loadvisualangle|loadVisualAngle]](const XVisualAngle * va) * void [[xrender#setvisualangle|setVisualAngle]](const double * viewRange, const double * dir) * void [[xrender#synchronize|synchronize]](XView * refView) * void [[xrender#saveimage|saveImage]](const char * path, bool bOffScreen = true) * void [[xrender#updateoverlay|updateOverlay]]() * void [[xrender#updatecolorencode|updateColorEncode]](bool forced = false) * int [[xrender#countcoloredpixel|countColoredPixel]](const XRenderData * rd) * void [[xrender#updatecolorsetting|updateColorSetting]]() * virtual void [[xrender#createshader|createShader]]() * void [[xrender#clearpickpolygon|clearPickPolygon]]() * bool [[xrender#ispolygonavailable|isPolygonAvailable]]() * float [[xrender#getdepthonpoint|getDepthOnPoint]](int x, int y) * GLuint [[xrender#loadtexture|loadTexture]](const char* file_name) * void [[xrender#fitlocal|fitLocal]](const real * localBox, bool bResetCenter = false) * void [[xrender#drawlabel|drawLabel]](int x, int y, int w, int h, const char * str) * void [[xrender#drawpointlabel|drawPointLabel]]() * void [[xrender#drawvaluelabel|drawValueLabel]](ValueLabel * vl, bool bDrawLine = true, int width = 120, int height = 28) * void [[xrender#setvaluelabel|setValueLabel]](const char * str, ValueLabel * vl, RGBAColor c = RGBAColor(108, 0, 108, 64)) * virtual void [[xrender#updatevaluelabel|updateValueLabel]]() * void [[xrender#clearvaluelabel|clearValueLabel]](vector * keepObjs = NULL) * void [[xrender#addgifframe|addGifFrame]]() * void [[xrender#endgifrecord|endGifRecord]]() **//Protected interface//** * void [[xrender#initializegl|initializeGL]]() * void [[xrender#resizegl|resizeGL]](int width, int height) * void [[xrender#paintgl|paintGL]]() * void [[xrender#keypressevent|keyPressEvent]](QKeyEvent *event) * void [[xrender#keyreleaseevent|keyReleaseEvent]](QKeyEvent *event) * void [[xrender#wheelevent|wheelEvent]](QWheelEvent * e) * void [[xrender#mousepressevent|mousePressEvent]](QMouseEvent *event) * void [[xrender#mousemoveevent|mouseMoveEvent]](QMouseEvent *event) * void [[xrender#mousereleaseevent|mouseReleaseEvent]](QMouseEvent *event) * void [[xrender#contextmenuevent|contextMenuEvent]](QContextMenuEvent * event) * void [[xrender#getplaneby2point|getPlaneBy2Point]](int x0, int y0, int x1, int y1, XPlane * plane) * bool [[xrender#createshaderprogram|createShaderProgram]](const char * src_code, const char * fragment, ShaderProgram * sp) * void [[xrender#deleteshaderprogram|deleteShaderProgram]](ShaderProgram * sp) * void [[xrender#useshaderprogram|useShaderProgram]](ulong spid) * void [[xrender#updateshaderattriblocation|updateShaderAttribLocation]](ulong spID, ShaderVarLocation * varLoc = 0) * void [[xrender#updateclipplane|updateClipPlane]](bool bUseShader = true) * void [[xrender#disableclipplane|disableClipPlane]]() * void [[xrender#enableclipplane|enableClipPlane]]() * void [[xrender#highlightelement|highlightElement]](const XElement * el) * void [[xrender#drawpickedelements|drawPickedElements]](const XRenderData * rd, bool bUseIndex = false) * bool [[xrender#isoperationtype|isOperationType]](int op) * virtual void [[xrender#setviewangle|setViewAngle]](GLViewAngle va, const real *rot_angle = 0) * virtual void [[xrender#setcenter|setCenter]](const real * center) * void [[xrender#drawsolid|drawSolid]](const XGeometry * g, bool bEncode, bool bSecond = false) * void [[xrender#drawpart|drawPart]](const XPart * p, bool bEncode, bool bSecond = false) * void [[xrender#drawtransform|drawTransform]](ulong spID, ShaderVarLocation * contourVarLoc = 0) * void [[xrender#initshadercontext|initShaderContext]](XShaderContext * sc) * void [[xrender#useshadercontext|useShaderContext]](XShaderContext * sc) * void [[xrender#unuseshadercontext|unuseShaderContext]](XShaderContext * sc, bool bRelease = false) * virtual void [[xrender#setshadercontext|setShaderContext]](ulong spID) * void [[xrender#checkglextension|checkGLExtension]]() * void [[xrender#onpick|onPick]]() * bool [[xrender#calcpickcoord|calcPickCoord]](real * coord) * ErrorCode [[xrender#error|error]]() * void [[xrender#drawstring|drawString]](const char *str, const double * loc) * void [[xrender#drawstring|drawString]](const char *str, float x, float y, float z) * void [[xrender#drawstring|drawString]](const char * str, int x, int y, bool bNewMatrix = true) * void [[xrender#chooseglformat|chooseGLFormat]]() * void [[xrender#saveglstate|saveGLState]]() * void [[xrender#restoreglstate|restoreGLState]]() * void [[xrender#drawbackground|drawBackground]]() * virtual void [[xrender#drawforeground|drawForeground]]() * void [[xrender#drawaxis|drawAxis]]() * void [[xrender#drawcoordsys|drawCoordSys]](const XCoordSystem * cs) * void [[xrender#drawdatumaxis|drawDatumAxis]](const XDatumAxis * cs) * void [[xrender#drawguideplane|drawGuidePlane]]() * void [[xrender#drawrubberband|drawRubberband]]() * void [[xrender#drawentity|drawEntity]](DrawingBaseEntity * pEnt, void * quadratic = 0) * void [[xrender#drawoverlay|drawOverlay]]() * void [[xrender#drawcolorindex|drawColorIndex]](const char * label) * void [[xrender#drawcolorindex|drawColorIndex]](const char * label, float min, float max, int div) * void [[xrender#drawlocalcontour|drawLocalContour]]() * void [[xrender#drawinstancedvectorvbo|drawInstancedVectorVBO]](ShaderProgram * sp, float vecScale, float coordScale, const XRenderData * rd) * void [[xrender#drawelemencode|drawElemEncode]](XModel * mdl) * void [[xrender#drawnodeencode|drawNodeEncode]](XModel * mdl) * void [[xrender#drawfaceencode|drawFaceEncode]](XModel * mdl, bool bSecond = false) * void [[xrender#drawedgeencode|drawEdgeEncode]](XModel * mdl, bool bSecond = false) * void [[xrender#drawvertexencode|drawVertexEncode]](XModel * mdl, bool bSecond = false) * void [[xrender#drawprimitive|drawPrimitive]](int mode, int count, int type = GL_UNSIGNED_INT, const void *indices = NULL, int rangeStart = -1, int rangeEnd = -1) * void [[xrender#drawmodelgeometry|drawModelGeometry]](XModel * mdl, TypeID geomType, TypeID drawType) * void [[xrender#drawfps|drawFPS]](double fps) * void [[xrender#drawscale|drawScale]](double scale) * void [[xrender#zoomstepin|zoomStepIn]]() * void [[xrender#zoomstepout|zoomStepOut]]() * void [[xrender#beginpixeldraw|beginPixelDraw]](int px, int py) * void [[xrender#endpixeldraw|endPixelDraw]]() * void [[xrender#renderfromfbo|renderFromFBO]](FBObject &fbo) * void [[xrender#bindfbo|bindFBO]](FBObject &fbo) * void [[xrender#releasefbo|releaseFBO]]() * void [[xrender#resizefbo|resizeFBO]]() * void [[xrender#updatemodelviewmatrix|updateModelViewMatrix]]() * void [[xrender#calcsigntline|calcSigntLine]](int x, int y, double depth, double * l_pt, double * l_dir) * bool [[xrender#isguideplaneactived|isGuidePlaneActived]]() * void [[xrender#panguideplane|panGuidePlane]](int wx, int wy) * bool [[xrender#isscenetimeout|isSceneTimeOut]]() * virtual void [[xrender#drawencodecolor|drawEncodeColor]]() * virtual void [[xrender#drawhighlight|drawHighlight]]() * virtual void [[xrender#drawanimation|drawAnimation]]() * bool [[xrender#getpickposition|getPickPosition]](real * pos) * bool [[xrender#getpickcuboid|getPickCuboid]](int left, int right, int bot, int top, XObBox * box) * virtual void [[xrender#drawmodel|drawModel]]() * virtual void [[xrender#drawsolid|drawSolid]]() * virtual void [[xrender#drawclip|drawClip]]() * virtual void [[xrender#drawpreview|drawPreview]]() * virtual void [[xrender#drawisoline|drawIsoline]]() * virtual void [[xrender#drawstreamline|drawStreamline]]() * virtual void [[xrender#drawpicked|drawPicked]]() * virtual void [[xrender#drawmarker|drawMarker]]() * void [[xrender#drawmarkertext|drawMarkerText]](const char * str, const double * startPos, const char * endPos, TypeID extendAxis, double extendH) * void [[xrender#drawtris|drawTris]](XModel * mdl) * void [[xrender#drawlines|drawLines]](XModel * mdl) * void [[xrender#drawaxis|drawAxis]](const double * dir, GLUquadricObj * pQuadric, const char * label = 0, double axisLen = 5) * void [[xrender#drawcross|drawCross]](const double * center, double scale, bool bOblicque = false, RGBAColor c = RGBAColor(0,255,0)) * void [[xrender#drawarrow|drawArrow]](const double * dir, GLUquadricObj * pQuadric) * void [[xrender#zoomlocal|zoomLocal]]() * double [[xrender#getscalefactor|getScaleFactor]]() * void [[xrender#initopflag|initOpFlag]]() * void [[xrender#initfbo|initFBO]]() * void [[xrender#initlight|initLight]]() * ulong [[xrender#getcoloredenitityid|getColoredEnitityId]](int x, int y, int range = 10) * int [[xrender#getcoloredenitityid|getColoredEnitityId]](int xb, int yb, int xt, int yt, IDHash * eid_hash) * int [[xrender#getcoloredenitityid|getColoredEnitityId]](IDHash * eid_hash) * void [[xrender#setglstate|setGLState]](KGL_STATE st) * void [[xrender#saveglformat|saveGLformat]]() * void [[xrender#bindindexdatafromarray|bindIndexDataFromArray]](XArrayPool * pArray, int offset, int count, int bufId) * void [[xrender#bindcolordatafromarray|bindColorDataFromArray]](XArrayPool * pArray, int offset, int count, int bufId) * void [[xrender#checkclipplane|checkClipPlane]]() * virtual void [[xrender#updateanimationframe|updateAnimationFrame]](VertexFrameFile * vff) * void [[xrender#drawmodelvff|drawModelVFF]](const VertexFrameFile * vff, int activeMode = Active_Normal) * void [[xrender#drawvff|drawVFF]](const VertexFrameFile * vff, int target, int mode = Active_Normal) * void [[xrender#drawscene|drawScene]]() * virtual void [[xrender#updatescenevbo|updateSceneVBO]](TypeID updateFlag) * void [[xrender#resetvbocount|resetVBOCount]](TypeID updateFlag) * void [[xrender#resetsecondvbocount|resetSecondVBOCount]](TypeID updateFlag) * void [[xrender#updatevbosize|updateVBOSize]](TypeID updateFlag = (Update_Face | Update_Edge)) * void [[xrender#updatesecondvbosize|updateSecondVBOSize]](TypeID updateFlag = (Update_Face | Update_Edge)) * void [[xrender#bindvbovertexarrayattribute|bindVBOVertexArrayAttribute]](TypeID vbType, ulong vaID) * void [[xrender#updaterenderdatatovbo|updateRenderDataToVBO]](const XRenderData * rd, int mode, ulong color, int contourVAID, const int * deformVAID) * void [[xrender#updatesecondrenderdatatovbo|updateSecondRenderDataToVBO]](const XRenderData * rd, int mode, ulong color) * int [[xrender#updaterenderdatatolineindex|updateRenderDataToLineIndex]](const XRenderData * rd, vector * lineIndex, int offset = 0) * void [[xrender#updatelocalcontourdatatovbo|updateLocalContourDataToVBO]](const XRenderData * rd, const XArray * pcolor) * void [[xrender#drawmodelvbo|drawModelVBO]](int activeMode = Active_Normal, int edgeIndexCnt = 0) * void [[xrender#drawsecondmodelvbo|drawSecondModelVBO]](int activeMode = Active_Normal) * void [[xrender#drawrenderdata|drawRenderData]](const XRenderData * rd, int mode = Active_Normal, int contourVAID = 0, const int * deformVAID = NULL) * void [[xrender#drawvbo|drawVBO]](int target, int mode = Active_Normal) * void [[xrender#drawtriedgevbo|drawTriEdgeVBO]](int mode, int triEdgeIndexCnt = 0) * void [[xrender#drawsecondvbo|drawSecondVBO]](int target, int mode = Active_Normal) * void [[xrender#createvbo|createVBO]](XVertexBuffer & bs, int count, int unitSize = sizeof(float), int dim = 1) * void [[xrender#drawinstancedvector|drawInstancedVector]](ShaderProgram * sp, const XRenderData * rd) ---- {{anchor:m_pparapp}} **MainFrame * m_pParApp** 框架对象 {{anchor:m_qlastpos}} **QPoint m_qLastPos** 鼠标操作的最后位置坐标 {{anchor:m_prevpt}} **Vector2i m_PrevPt** 鼠标操作的前一个位置坐标 {{anchor:m_curpt}} **Vector2i m_CurPt** 鼠标操作的当前位置坐标 {{anchor:m_qrubberbandpos}} **QPoint m_qRubberBandPos** 鼠标操作的橡皮筋显示(虚线显示选择框) {{anchor:m_frotangle[3]}} **real m_fRotAngle[3]** 视图旋转角度 {{anchor:m_dcenter[3]}} **real m_dCenter[3]** 视图中心 {{anchor:m_dmodelviewmatrix}} **Matrix4d m_dModelViewMatrix** 模型视图变换矩阵 {{anchor:m_dprojectmatrix}} **Matrix4d m_dProjectMatrix** 模型视图投影矩阵 {{anchor:m_dviewbox[6]}} **GLdouble m_dViewBox[6]** 视图包围盒 {{anchor:m_iwndwidth}} **GLint m_iWndWidth** 视图宽度 {{anchor:m_iwndheight}} **GLint m_iWndHeight** 视图高度 {{anchor:m_uifboid}} **GLuint m_uiFboId** 帧缓冲区对象ID {{anchor:m_ulcurrentshader}} **ulong m_ulCurrentShader** 当前着色器ID {{anchor:m_svloc}} **ShaderVarLocation m_SVLoc** 着色器变量位置结构体 {{anchor:m_ulglext}} **ulong m_ulGLExt** OpenGL扩展标志 {{anchor:m_ulenable}} **ulong m_ulEnable** 帧缓冲区对象的激活标志 {{anchor:m_btexready}} **bool m_bTexReady** 纹理是否准备好 {{anchor:m_bencodeready}} **bool m_bEncodeReady** 对象编码数据是否准备好 {{anchor:m_bcontextmenuready}} **bool m_bContextMenuReady** 右键菜单是否准备好 {{anchor:m_ulimagetextureid}} **ulong m_ulImageTextureID** 纹理图片ID号 {{anchor:m_ulopflag}} **ulong m_ulOpFlag** 交互操作状态标志 {{anchor:m_ulpickentityid}} **ulong m_ulPickEntityId** 拾取对象ID {{anchor:m_ptimer}} **QElapsedTimer * m_pTimer** 渲染计时器 {{anchor:m_ulprevtime}} **ulong m_ulPrevTime** 上一个渲染时间点 {{anchor:m_dscale}} **double m_dScale** 渲染空间大小与像素的比例系数 {{anchor:m_polygonpickpts}} **QPolygonF * m_PolygonPickPts** 多边形拾取模式下的点坐标数组 {{anchor:m_ptextlabels}} **unordered_map * m_pTextLabels** 文本标签数组 {{anchor:m_bgtopcolor[3]}} **uint8 m_BGTopColor[3]** 背景上部颜色 {{anchor:m_bgbotcolor[3]}} **uint8 m_BGBotColor[3]** 背景下部颜色 {{anchor:m_textcolor}} **RGBAColor m_TextColor** 文本显示颜色 {{anchor:m_colorencodefbo}} **FBObject m_ColorEncodeFbo** 对象编码帧缓冲区对象 {{anchor:m_poverlayfbo}} **QOpenGLFramebufferObject * m_pOverlayFbo** Overlay缓冲区对象 {{anchor:m_vbo[vbo_maxtype]}} **XVertexBuffer m_VBO[VBO_MaxType]** 顶点缓冲区对象数组 {{anchor:g_ulcolorencode}} **XArray g_ulColorEncode** 对象编码值(从编码帧缓冲区中读取) {{anchor:g_fdepth}} **XArray g_fDepth** 渲染深度值数组 {{anchor:m_panimationtimer}} **QTimer * m_pAnimationTimer** 动画计时器 {{anchor:m_scenebegintime}} **ulong m_SceneBeginTime** 场景渲染起始时间 {{anchor:g_foffsetfarest}} **static float g_fOffsetFarest** 最远深度偏移值 {{anchor:g_foffsetfar}} **static float g_fOffsetFar** 较远深度偏移值 {{anchor:g_foffsetnear}} **static float g_fOffsetNear** 较近深度偏移值 {{anchor:g_foffsetnearest}} **static float g_fOffsetNearest** 最近深度偏移值 {{anchor:g_ulop[op_type_count]}} **static ulong g_ulOp[Op_Type_Count]** 交互操作标志 {{anchor:m_api}} **OpenGLAPI * m_API** OpenGL函数接口句柄 {{anchor:m_pgif}} **GifGenerator m_pGif** GIF动画生成器 ---- {{anchor:xrender1}} **XRender(MainFrame * pParApp, XDocument * doc)** *function: 构造函数 *parameters: - [i]MainFrame * pParApp: 框架对象 - [i] XDocument * doc: 文档对象 *return value: 无 {{anchor:~xrender}} **virtual ~XRender()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:onviewdataupdated}} **virtual void onViewDataUpdated()** *function: 视图数据更新时更新视图的相关缓冲区 *parameters: NULL *return value: 无 {{anchor:onanimationframeupdated}} **void onAnimationFrameUpdated()** *function: 动画帧更新时更新动画相关的缓冲区 *parameters: NULL *return value: 无 {{anchor:createcontextmenu}} **virtual void createContextMenu()** *function: 创建右键菜单 *parameters: NULL *return value: 无 {{anchor:setopflag}} **virtual void setOpFlag(OpType op)** *function: 设置指定操作的标志 *parameters: - [i]OpType op: 操作类型 *return value: 操作标志 {{anchor:refresh}} **virtual void refresh()** *function: 重新渲染视图 *parameters: NULL *return value: 无 {{anchor:updateshader}} **virtual void updateShader()** *function: 更新着色器 *parameters: NULL *return value: 无 {{anchor:clearshader}} **virtual void clearShader()** *function: 清空着色器 *parameters: NULL *return value: 无 {{anchor:getframe}} **MainFrame * getFrame()** *function: 获取框架对象 *parameters: NULL *return value: 框架对象 {{anchor:updateviewbox}} **virtual void updateViewBox(const real * range)** *function: 更新视图框 *parameters: - [i]const real * range: 视图框包围盒 *return value: 无 {{anchor:setmodelviewmatrix}} **void setModelViewMatrix(double *matrix)** *function: 设置模型视图变换矩阵 *parameters: - [i]double *matrix: 模型视图变换矩阵 *return value: 无 {{anchor:savevisualangle}} **void saveVisualAngle(XVisualAngle * va)** *function: 设置视角 *parameters: - [i]XVisualAngle * va: 视角数据 *return value: 无 {{anchor:loadvisualangle}} **void loadVisualAngle(const XVisualAngle * va)** *function: 载入视角 *parameters: - [i]const XVisualAngle * va: 视角数据 *return value: 无 {{anchor:setvisualangle}} **void setVisualAngle(const double * viewRange, const double * dir)** *function: 设置视角 *parameters: - [i]const double * viewRange: 视图区域 - [i] const double * dir: 视图方向 *return value: 无 {{anchor:synchronize}} **void synchronize(XView * refView)** *function: 同步视图 *parameters: - [i]XView * refView: 参考视图 *return value: 无 {{anchor:saveimage}} **void saveImage(const char * path, bool bOffScreen = true)** *function: 将视图以图像保存到文件中 *parameters: - [i]const char * path: 图像文件路径 - [i] bool bOffScreen = true: 是否离屏渲染 *return value: 无 {{anchor:updateoverlay}} **void updateOverlay()** *function: 更新覆盖层 *parameters: NULL *return value: 无 {{anchor:updatecolorencode}} **void updateColorEncode(bool forced = false)** *function: 更新对象编码 *parameters: - [i]bool forced = false: 强制更新 *return value: 无 {{anchor:countcoloredpixel}} **int countColoredPixel(const XRenderData * rd)** *function: 渲染之后计算被编码的像素数目 *parameters: - [i]const XRenderData * rd: 渲染数据对象 *return value: 被编码的像素个数 {{anchor:updatecolorsetting}} **void updateColorSetting()** *function: 更新颜色设定 *parameters: NULL *return value: 无 {{anchor:createshader}} **virtual void createShader()** *function: 虚接口,创建着色器 *parameters: NULL *return value: 无 {{anchor:clearpickpolygon}} **void clearPickPolygon()** *function: 清空多边形选择点 *parameters: NULL *return value: 无 {{anchor:ispolygonavailable}} **bool isPolygonAvailable()** *function: 是否多边形选择模式 *parameters: NULL *return value: 多边形选择模式返回true,否则返回false {{anchor:getdepthonpoint}} **float getDepthOnPoint(int x, int y)** *function: 获取屏幕给定点的深度值 *parameters: - [i]int x: 点X坐标 - [i] int y: 点Y坐标 *return value: 屏幕给定点的深度值 {{anchor:loadtexture}} **GLuint loadTexture(const char* file_name)** *function: 载入纹理数据 *parameters: - [i]const char* file_name: 纹理图片路径 *return value: 纹理对象ID {{anchor:fitlocal}} **void fitLocal(const real * localBox, bool bResetCenter = false)** *function: 调整视图的包围盒与指定包围盒适配,并根据需要重置中心 *parameters: - [i]const real * localBox: 指定视图包围盒 - [i] bool bResetCenter = false: 是否重置视图中心 *return value: 无 {{anchor:drawlabel}} **void drawLabel(int x, int y, int w, int h, const char * str)** *function: 绘制标签 *parameters: - [i]int x: 起始点x坐标 - [i] int y: 起始点Y坐标 - [i] int w: 标签长度 - [i] int h: 标签高度 - [i] const char * str: 标签字符串 *return value: 无 {{anchor:drawpointlabel}} **void drawPointLabel()** *function: 绘制点标签 *parameters: NULL *return value: 无 {{anchor:drawvaluelabel}} **void drawValueLabel(ValueLabel * vl, bool bDrawLine = true, int width = 120, int height = 28)** *function: 绘制值标签 *parameters: - [i]ValueLabel * vl: 值标签数据 - [i] bool bDrawLine = true: 是否绘制指示线 - [i] int width = 120: 标签宽度 - [i] int height = 28: 标签高度 *return value: 无 {{anchor:setvaluelabel}} **void setValueLabel(const char * str, ValueLabel * vl, RGBAColor c = RGBAColor(108, 0, 108, 64))** *function: 设置值标签 *parameters: - [i]const char * str: 标签字符串 - [i] ValueLabel * vl: 值标签对象 - [i] RGBAColor c: 颜色值 *return value: 无 {{anchor:updatevaluelabel}} **virtual void updateValueLabel()** *function: 更新值标签 *parameters: NULL *return value: 无 {{anchor:clearvaluelabel}} **void clearValueLabel(vector * keepObjs = NULL)** *function: 清空值标签 *parameters: - [i]vector * keepObjs = NULL: 需要保留的对象数组 *return value: 无 {{anchor:addgifframe}} **void addGifFrame()** *function: 添加Gif动画帧 *parameters: NULL *return value: 无 {{anchor:endgifrecord}} **void endGifRecord()** *function: 结束GIF动画录制 *parameters: NULL *return value: 无 ---- {{anchor:initializegl}} **void initializeGL()** *function: 初始化openGL窗口 *parameters: NULL *return value: 无 {{anchor:resizegl}} **void resizeGL(int width, int height)** *function: 调整openGL窗口大小 *parameters: - [i]int width: 窗口宽度 - [i] int height: 窗口高度 *return value: 无 {{anchor:paintgl}} **void paintGL()** *function: 绘制openGL窗口 *parameters: NULL *return value: 无 {{anchor:keypressevent}} **void keyPressEvent(QKeyEvent *event)** *function: 响应键盘单击事件 *parameters: - [i]QKeyEvent *event: 键盘单击事件 *return value: 无 {{anchor:keyreleaseevent}} **void keyReleaseEvent(QKeyEvent *event)** *function: 响应键盘释放事件 *parameters: - [i]QKeyEvent *event: 键盘释放事件 *return value: 无 {{anchor:wheelevent}} **void wheelEvent(QWheelEvent * e)** *function: 响应鼠标滚轮事件 *parameters: - [i]QWheelEvent * e: 鼠标滚轮事件 *return value: 无 {{anchor:mousepressevent}} **void mousePressEvent(QMouseEvent *event)** *function: 响应鼠标单击事件 *parameters: - [i]QMouseEvent *event: 鼠标单击事件 *return value: 无 {{anchor:mousemoveevent}} **void mouseMoveEvent(QMouseEvent *event)** *function: 响应鼠标移动事件 *parameters: - [i]QMouseEvent *event: 鼠标移动事件 *return value: 无 {{anchor:mousereleaseevent}} **void mouseReleaseEvent(QMouseEvent *event)** *function: 响应鼠标释放事件 *parameters: - [i]QMouseEvent *event: 鼠标释放事件 *return value: 无 {{anchor:contextmenuevent}} **void contextMenuEvent(QContextMenuEvent * event)** *function: 响应右键菜单事件 *parameters: - [i]QContextMenuEvent * event: 右键菜单事件 *return value: 无 {{anchor:getplaneby2point}} **void getPlaneBy2Point(int x0, int y0, int x1, int y1, XPlane * plane)** *function: 通过过的指定2点的垂直于屏幕的平面 *parameters: - [i]int x0: 第一点坐标X - [i] int y0: 第一点坐标Y - [i] int x1: 第二点坐标X - [i] int y1: 第二点坐标Y - [i] XPlane * plane: 平面对象 *return value: 无 {{anchor:createshaderprogram}} **bool createShaderProgram(const char * src_code, const char * fragment, ShaderProgram * sp)** *function: 创建着色器 *parameters: - [i]const char * src_code: 顶点着色器源码 - [i] const char * fragment: 片元着色器源码 - [i] ShaderProgram * sp: 着色器对象 *return value: 成功创建返回true,否则返回false {{anchor:deleteshaderprogram}} **void deleteShaderProgram(ShaderProgram * sp)** *function: 销毁着色器对象 *parameters: - [i]ShaderProgram * sp: 着色器对象 *return value: 无 {{anchor:useshaderprogram}} **void useShaderProgram(ulong spid)** *function: 使用着色器 *parameters: - [i]ulong spid: 着色器ID *return value: 无 {{anchor:updateshaderattriblocation}} **void updateShaderAttribLocation(ulong spID, ShaderVarLocation * varLoc = 0)** *function: 更新着色器变量位置 *parameters: - [i]ulong spID: 着色器ID - [i] ShaderVarLocation * varLoc = 0: 着色器变量结构体 *return value: 无 {{anchor:updateclipplane}} **void updateClipPlane(bool bUseShader = true)** *function: 更新裁剪平面 *parameters: - [i]bool bUseShader = true: 是否使用着色器 *return value: 无 {{anchor:disableclipplane}} **void disableClipPlane()** *function: 抑制裁剪平面 *parameters: NULL *return value: 无 {{anchor:enableclipplane}} **void enableClipPlane()** *function: 激活裁剪平面 *parameters: NULL *return value: 无 {{anchor:highlightelement}} **void highlightElement(const XElement * el)** *function: 高亮单元 *parameters: - [i]const XElement * el: 单元对象 *return value: 无 {{anchor:drawpickedelements}} **void drawPickedElements(const XRenderData * rd, bool bUseIndex = false)** *function: 绘制指定单元对象 *parameters: - [i]const XRenderData * rd: 单元对象的渲染数据结构体 - [i] bool bUseIndex = false: 是否使用ELEMENT INDEX *return value: 无 {{anchor:isoperationtype}} **bool isOperationType(int op)** *function: 是否为指定类型操作(如旋转) *parameters: - [i]int op: 操作类型 *return value: 是指定操作返回true,否则返回false {{anchor:setviewangle}} **virtual void setViewAngle(GLViewAngle va, const real *rot_angle = 0)** *function: 设置视图视角 *parameters: - [i]GLViewAngle va: 视角类型 - [i] const real *rot_angle = 0: 视图旋转角 *return value: 无 {{anchor:setcenter}} **virtual void setCenter(const real * center)** *function: 设置视图中心 *parameters: - [i]const real * center: 视图中心坐标 *return value: 无 {{anchor:drawsolid}} **void drawSolid(const XGeometry * g, bool bEncode, bool bSecond = false)** *function: 绘制实体对象 *parameters: - [i]const XGeometry * g: 实体几何对象 - [i] bool bEncode: 是否编码 - [i] bool bSecond = false: 是否第二显示模型 *return value: 无 {{anchor:drawpart}} **void drawPart(const XPart * p, bool bEncode, bool bSecond = false)** *function: 绘制部件 *parameters: - [i]const XPart * p: 部件对象 - [i] bool bEncode: 是否编码(用于拾取) - [i] bool bSecond = false: 是否第二显示模型 *return value: 无 {{anchor:drawtransform}} **void drawTransform(ulong spID, ShaderVarLocation * contourVarLoc = 0)** *function: 绘制变形体 *parameters: - [i]ulong spID: 着色器ID - [i] ShaderVarLocation * contourVarLoc = 0: 着色器变量位置数据 *return value: 无 {{anchor:initshadercontext}} **void initShaderContext(XShaderContext * sc)** *function: 初始化着色器上下文 *parameters: - [i]XShaderContext * sc: 着色器上下文对象 *return value: 无 {{anchor:useshadercontext}} **void useShaderContext(XShaderContext * sc)** *function: 使用着色器上下文 *parameters: - [i]XShaderContext * sc: 着色器上下文对象 *return value: 无 {{anchor:unuseshadercontext}} **void unuseShaderContext(XShaderContext * sc, bool bRelease = false)** *function: 取消使用着色器上下文 *parameters: - [i]XShaderContext * sc: 着色器上下文对象 - [i] bool bRelease = false: 是否释放着色器上下文 *return value: 无 {{anchor:setshadercontext}} **virtual void setShaderContext(ulong spID)** *function: 设置当前着色器上下文 *parameters: - [i]ulong spID: 着色器ID *return value: 无 {{anchor:checkglextension}} **void checkGLExtension()** *function: 检查openGL扩展 *parameters: NULL *return value: 无 {{anchor:onpick}} **void onPick()** *function: 当交互操作为拾取对象时响应对象拾取操作 *parameters: NULL *return value: 无 {{anchor:calcpickcoord}} **bool calcPickCoord(real * coord)** *function: 计算拾取坐标 *parameters: - [i]real * coord: 存放拾取坐标 *return value: 返回true {{anchor:error}} **ErrorCode error()** *function: 检查openGL的错误字符串 *parameters: NULL *return value: 返回错误码 {{anchor:drawstring}} **void drawString(const char *str, const double * loc)** *function: 绘制字符串 *parameters: - [i]const char *str: 字符串 - [i] const double * loc: 绘制的起始坐标 *return value: 无 {{anchor:drawstring}} **void drawString(const char *str, float x, float y, float z)** *function: 绘制字符串 *parameters: - [i]const char *str: 字符串 - [i] float x: 绘制的起始X坐标 - [i] float y: 绘制的起始Y坐标 - [i] float z: 绘制的起始Z坐标 *return value: 无 {{anchor:drawstring}} **void drawString(const char * str, int x, int y, bool bNewMatrix = true)** *function: 绘制字符串 *parameters: - [i]const char * str: 字符串 - [i] int x: 绘制的起始屏幕坐标X - [i] int y: 绘制的起始屏幕坐标Y - [i] bool bNewMatrix = true: 是否使用新的变换矩阵 *return value: 无 {{anchor:chooseglformat}} **void chooseGLFormat()** *function: 选择GL上下文格式 *parameters: NULL *return value: 无 {{anchor:saveglstate}} **void saveGLState()** *function: 保存openGL渲染状态 *parameters: NULL *return value: 无 {{anchor:restoreglstate}} **void restoreGLState()** *function: 恢复openGL渲染状态 *parameters: NULL *return value: 无 {{anchor:drawbackground}} **void drawBackground()** *function: 绘制背景 *parameters: NULL *return value: 无 {{anchor:drawforeground}} **virtual void drawForeground()** *function: 绘制前景 *parameters: NULL *return value: 无 {{anchor:drawaxis}} **void drawAxis()** *function: 绘制所有坐标系 *parameters: NULL *return value: 无 {{anchor:drawcoordsys}} **void drawCoordSys(const XCoordSystem * cs)** *function: 绘制指定坐标系 *parameters: - [i]const XCoordSystem * cs: 坐标系对象 *return value: 无 {{anchor:drawdatumaxis}} **void drawDatumAxis(const XDatumAxis * cs)** *function: 绘制基准轴 *parameters: - [i]const XDatumAxis * cs: 基准轴对象 *return value: 无 {{anchor:drawguideplane}} **void drawGuidePlane()** *function: 绘制辅助向导平面 *parameters: NULL *return value: 无 {{anchor:drawrubberband}} **void drawRubberband()** *function: 绘制橡皮筋框 *parameters: NULL *return value: 无 {{anchor:drawentity}} **void drawEntity(DrawingBaseEntity * pEnt, void * quadratic = 0)** *function: 绘制基本实体 *parameters: - [i]DrawingBaseEntity * pEnt: 基本实体对象 - [i] void * quadratic = 0: 二次曲线参数对象 *return value: 无 {{anchor:drawoverlay}} **void drawOverlay()** *function: 绘制Overlay层 *parameters: NULL *return value: 无 {{anchor:drawcolorindex}} **void drawColorIndex(const char * label)** *function: 绘制色带标签 *parameters: - [i]const char * label: 标签字符串 *return value: 无 {{anchor:drawcolorindex}} **void drawColorIndex(const char * label, float min, float max, int div)** *function: 绘制色带标签 *parameters: - [i]const char * label: 标签字符串 - [i] float min: 最小值 - [i] float max: 最大值 - [i] int div: 色带个数 *return value: 无 {{anchor:drawlocalcontour}} **void drawLocalContour()** *function: 绘制局部云图 *parameters: NULL *return value: 无 {{anchor:drawinstancedvectorvbo}} **void drawInstancedVectorVBO(ShaderProgram * sp, float vecScale, float coordScale, const XRenderData * rd)** *function: 绘制实例化矢量 *parameters: - [i]ShaderProgram * sp: 着色器对象 - [i] float vecScale: 矢量比例系数 - [i] float coordScale: 坐标比例系数 - [i] const XRenderData * rd: 渲染数据结构体 *return value: 无 {{anchor:drawelemencode}} **void drawElemEncode(XModel * mdl)** *function: 绘制单元编码 *parameters: - [i]XModel * mdl: 模型对象 *return value: 无 {{anchor:drawnodeencode}} **void drawNodeEncode(XModel * mdl)** *function: 绘制节点编码 *parameters: - [i]XModel * mdl: 模型对象 *return value: 无 {{anchor:drawfaceencode}} **void drawFaceEncode(XModel * mdl, bool bSecond = false)** *function: 绘制面编码 *parameters: - [i]XModel * mdl: 模型对象 - [i] bool bSecond = false: 是否第二显示模式 *return value: 无 {{anchor:drawedgeencode}} **void drawEdgeEncode(XModel * mdl, bool bSecond = false)** *function: 绘制边编码 *parameters: - [i]XModel * mdl: 模型对象 - [i] bool bSecond = false: 是否第二显示模式 *return value: 无 {{anchor:drawvertexencode}} **void drawVertexEncode(XModel * mdl, bool bSecond = false)** *function: 绘制顶点编码 *parameters: - [i]XModel * mdl: 模型对象 - [i] bool bSecond = false: 是否第二显示模式 *return value: 无 {{anchor:drawprimitive}} **void drawPrimitive(int mode, int count, int type = GL_UNSIGNED_INT, const void *indices = NULL, int rangeStart = -1, int rangeEnd = -1)** *function: 绘制几何元素 *parameters: - [i]int mode: 绘制模式 - [i] int count: 个数 - [i] int type = GL_UNSIGNED_INT: 数据类型 - [i] const void *indices = NULL: 索引数组 - [i] int rangeStart = -1: 起始索引 - [i] int rangeEnd = -1: 结束索引 *return value: 无 {{anchor:drawmodelgeometry}} **void drawModelGeometry(XModel * mdl, TypeID geomType, TypeID drawType)** *function: 绘制模型几何对象 *parameters: - [i]XModel * mdl: 模型对象 - [i] TypeID geomType: 几何类型 - [i] TypeID drawType: 绘制模式 *return value: 无 {{anchor:drawfps}} **void drawFPS(double fps)** *function: 绘制帧率 *parameters: - [i]double fps: 帧率值 *return value: 无 {{anchor:drawscale}} **void drawScale(double scale)** *function: 绘制比例系数 *parameters: - [i]double scale: 比例系数 *return value: 无 {{anchor:zoomstepin}} **void zoomStepIn()** *function: 单步放大 *parameters: NULL *return value: 无 {{anchor:zoomstepout}} **void zoomStepOut()** *function: 单步缩小 *parameters: NULL *return value: 无 {{anchor:beginpixeldraw}} **void beginPixelDraw(int px, int py)** *function: 开始像素绘制 *parameters: - [i]int px: 起始X坐标 - [i] int py: 起始Y坐标 *return value: 无 {{anchor:endpixeldraw}} **void endPixelDraw()** *function: 结束像素绘制 *parameters: NULL *return value: 无 {{anchor:renderfromfbo}} **void renderFromFBO(FBObject &fbo)** *function: 从帧缓冲对象中渲染 *parameters: - [i]FBObject &fbo: 帧缓冲对象 *return value: 无 {{anchor:bindfbo}} **void bindFBO(FBObject &fbo)** *function: 绑定帧缓冲对象 *parameters: - [i]FBObject &fbo: 帧缓冲对象 *return value: 无 {{anchor:releasefbo}} **void releaseFBO()** *function: 释放帧缓冲对象 *parameters: NULL *return value: 无 {{anchor:resizefbo}} **void resizeFBO()** *function: 重新设置帧缓冲对象的大小(当窗口发生变化时) *parameters: NULL *return value: 无 {{anchor:updatemodelviewmatrix}} **void updateModelViewMatrix()** *function: 更新模型视图变换矩阵 *parameters: NULL *return value: 无 {{anchor:calcsigntline}} **void calcSigntLine(int x, int y, double depth, double * l_pt, double * l_dir)** *function: 计算经过给定屏幕点的直线 *parameters: - [i]int x: 屏幕点坐标X - [i] int y: 屏幕点坐标Y - [i] double depth: 点的深度值 - [i] double * l_pt: 直线上一点 - [i] double * l_dir: 直线的方向矢量 *return value: 无 {{anchor:isguideplaneactived}} **bool isGuidePlaneActived()** *function: 辅助向导平面是否激活 *parameters: NULL *return value: 若激活向导平面返回true,否则返回false {{anchor:panguideplane}} **void panGuidePlane(int wx, int wy)** *function: 平移辅助向导平面 *parameters: - [i]int wx: 平移X分量 - [i] int wy: 平移Y分量 *return value: 无 {{anchor:isscenetimeout}} **bool isSceneTimeOut()** *function: 场景绘制时间是否超限 *parameters: NULL *return value: 超限返回true,否则返回false {{anchor:drawencodecolor}} **virtual void drawEncodeColor()** *function: 虚接口,绘制对象颜色编码 *parameters: NULL *return value: 无 {{anchor:drawhighlight}} **virtual void drawHighlight()** *function: 虚接口,绘制高亮对象 *parameters: NULL *return value: 无 {{anchor:drawanimation}} **virtual void drawAnimation()** *function: 虚接口,绘制动画 *parameters: NULL *return value: 无 {{anchor:getpickposition}} **bool getPickPosition(real * pos)** *function: 获取拾取点空间坐标 *parameters: - [i]real * pos: 拾取点空间坐标 *return value: 成功获取返回true,否则返回false {{anchor:getpickcuboid}} **bool getPickCuboid(int left, int right, int bot, int top, XObBox * box)** *function: 获取拾取立方体 *parameters: - [i]int left: 拾取域左边X位置 - [i] int right: 拾取域右边X位置 - [i] int bot: 拾取域上边Y位置 - [i] int top: 拾取域下边Y位置 - [i] XObBox * box: 有向包围盒 *return value: 成功获取返回true,否则返回false {{anchor:drawmodel}} **virtual void drawModel()** *function: 虚接口,绘制模型 *parameters: NULL *return value: {{anchor:drawsolid}} **virtual void drawSolid()** *function: 虚接口,绘制实体 *parameters: NULL *return value: 无 {{anchor:drawclip}} **virtual void drawClip()** *function: 虚接口,绘制剪切体 *parameters: NULL *return value: 无 {{anchor:drawpreview}} **virtual void drawPreview()** *function: 虚接口,绘制预览对象 *parameters: NULL *return value: 无 {{anchor:drawisoline}} **virtual void drawIsoline()** *function: 虚接口,绘制等值线 *parameters: NULL *return value: 无 {{anchor:drawstreamline}} **virtual void drawStreamline()** *function: 虚接口,绘制流线 *parameters: NULL *return value: 无 {{anchor:drawpicked}} **virtual void drawPicked()** *function: 虚接口,绘制选择对象 *parameters: NULL *return value: 无 {{anchor:drawmarker}} **virtual void drawMarker()** *function: 虚接口,绘制标记 *parameters: NULL *return value: 无 {{anchor:drawmarkertext}} **void drawMarkerText(const char * str, const double * startPos, const char * endPos, TypeID extendAxis, double extendH)** *function: 绘制标记字符串 *parameters: - [i]const char * str: 字符串 - [i] const double * startPos: 起始位置 - [i] const char * endPos: 结束位置 - [i] TypeID extendAxis: 扩展轴 - [i] double extendH: 扩展高度 *return value: 无 {{anchor:drawtris}} **void drawTris(XModel * mdl)** *function: 绘制模型的面片视图数据 *parameters: - [i]XModel * mdl: 模型对象 *return value: 无 {{anchor:drawlines}} **void drawLines(XModel * mdl)** *function: 绘制模型的线段视图数据 *parameters: - [i]XModel * mdl: 模型对象 *return value: 无 {{anchor:drawaxis}} **void drawAxis(const double * dir, GLUquadricObj * pQuadric, const char * label = 0, double axisLen = 5)** *function: 绘制坐标轴 *parameters: - [i]const double * dir: 方向矢量 - [i] GLUquadricObj * pQuadric: 二次曲面对象 - [i] const char * label = 0: 标签 - [i] double axisLen = 5: 轴长度系数 *return value: 无 {{anchor:drawcross}} **void drawCross(const double * center, double scale, bool bOblicque = false, RGBAColor c = RGBAColor(0,255,0))** *function: 绘制十字标记 *parameters: - [i]const double * center: 绘制中心 - [i] double scale: 比例系数 - [i] bool bOblicque = false: 是否透明 - [i] RGBAColor c: 颜色 *return value: 无 {{anchor:drawarrow}} **void drawArrow(const double * dir, GLUquadricObj * pQuadric)** *function: 绘制箭头 *parameters: - [i]const double * dir: 箭头方向 - [i] GLUquadricObj * pQuadric: 二次曲面对象 *return value: 无 {{anchor:zoomlocal}} **void zoomLocal()** *function: 缩放视图以适配指定局部区域 *parameters: NULL *return value: 无 {{anchor:getscalefactor}} **double getScaleFactor()** *function: 获取场景缩放系数 *parameters: NULL *return value: 场景缩放系数 {{anchor:initopflag}} **void initOpFlag()** *function: 初始化操作标志 *parameters: NULL *return value: 无 {{anchor:initfbo}} **void initFBO()** *function: 初始化帧缓冲对象 *parameters: NULL *return value: 无 {{anchor:initlight}} **void initLight()** *function: 初始化光照设置 *parameters: NULL *return value: 无 {{anchor:getcoloredenitityid}} **ulong getColoredEnitityId(int x, int y, int range = 10)** *function: 搜索指定位置的对象颜色编码 *parameters: - [i]int x: 指定屏幕X坐标 - [i] int y: 指定屏幕Y坐标 - [i] int range = 10: 搜索范围 *return value: 指定位置(指定范围内)的对象颜色编码 {{anchor:getcoloredenitityid}} **int getColoredEnitityId(int xb, int yb, int xt, int yt, IDHash * eid_hash)** *function: 获取指定范围的所有对象编码ID *parameters: - [i]int xb: 指定范围左下X坐标 - [i] int yb: 指定范围左下Y坐标 - [i] int xt: 指定范围右上X坐标 - [i] int yt: 指定范围右上Y坐标 - [i] IDHash * eid_hash: 存放编码ID的哈希 *return value: 有效编码的个数 {{anchor:getcoloredenitityid}} **int getColoredEnitityId(IDHash * eid_hash)** *function: 获取选择范围内所有对象编码ID *parameters: - [i]IDHash * eid_hash: 存放编码ID的哈希 *return value: 有效编码的个数 {{anchor:setglstate}} **void setGLState(KGL_STATE st)** *function: 设置opengl的状态 *parameters: - [i]KGL_STATE st: 状态类型 *return value: 无 {{anchor:saveglformat}} **void saveGLformat()** *function: 保存opengl的上下文格式 *parameters: NULL *return value: 无 {{anchor:bindindexdatafromarray}} **void bindIndexDataFromArray(XArrayPool * pArray, int offset, int count, int bufId)** *function: 绑定索引数据到VBO对象中 *parameters: - [i]XArrayPool * pArray: 索引数组 - [i] int offset: 偏移值 - [i] int count: 个数 - [i] int bufId: VBO ID *return value: 无 {{anchor:bindcolordatafromarray}} **void bindColorDataFromArray(XArrayPool * pArray, int offset, int count, int bufId)** *function: 绑定颜色数据到VBO对象中 *parameters: - [i]XArrayPool * pArray: 颜色数组 - [i] int offset: 偏移量 - [i] int count: 个数 - [i] int bufId: VBO ID *return value: 无 {{anchor:checkclipplane}} **void checkClipPlane()** *function: 检查裁剪平面并正确设置状态 *parameters: NULL *return value: 无 {{anchor:updateanimationframe}} **virtual void updateAnimationFrame(VertexFrameFile * vff)** *function: 更新动画帧 *parameters: - [i]VertexFrameFile * vff: 顶点帧文件对象 *return value: 无 {{anchor:drawmodelvff}} **void drawModelVFF(const VertexFrameFile * vff, int activeMode = Active_Normal)** *function: 绘制模型上的顶点帧 *parameters: - [i]const VertexFrameFile * vff: 顶点帧文件对象 - [i] int activeMode = Active_Normal: 绘制模式 *return value: 无 {{anchor:drawvff}} **void drawVFF(const VertexFrameFile * vff, int target, int mode = Active_Normal)** *function: 绘制顶点帧 *parameters: - [i]const VertexFrameFile * vff: 顶点帧文件对象 - [i] int target: 对象类型 - [i] int mode = Active_Normal: 绘制模式 *return value: 无 {{anchor:drawscene}} **void drawScene()** *function: 绘制场景 *parameters: NULL *return value: 无 {{anchor:updatescenevbo}} **virtual void updateSceneVBO(TypeID updateFlag)** *function: 更新场景VBO对象 *parameters: - [i]TypeID updateFlag: 更新标志 *return value: 无 {{anchor:resetvbocount}} **void resetVBOCount(TypeID updateFlag)** *function: 重置VBO对象大小 *parameters: - [i]TypeID updateFlag: 更新标志 *return value: 无 {{anchor:resetsecondvbocount}} **void resetSecondVBOCount(TypeID updateFlag)** *function: 重置第二显示模型的VBO对象大小 *parameters: - [i]TypeID updateFlag: 更新标志 *return value: 无 {{anchor:updatevbosize}} **void updateVBOSize(TypeID updateFlag = (Update_Face | Update_Edge))** *function: 更新VBO大小 *parameters: - [i]TypeID updateFlag: 更新标志 *return value: 无 {{anchor:updatesecondvbosize}} **void updateSecondVBOSize(TypeID updateFlag = (Update_Face | Update_Edge))** *function: 更新第二显示模型的VBO对象大小 *parameters: - [i]TypeID updateFlag: 更新标志 *return value: 无 {{anchor:bindvbovertexarrayattribute}} **void bindVBOVertexArrayAttribute(TypeID vbType, ulong vaID)** *function: 绑定VBO数据到顶点属性数组中 *parameters: - [i]TypeID vbType:VBO类型 - [i] ulong vaID: 顶点属性数组ID *return value: 无 {{anchor:updaterenderdatatovbo}} **void updateRenderDataToVBO(const XRenderData * rd, int mode, ulong color, int contourVAID, const int * deformVAID)** *function: 更新渲染数据到VBO中 *parameters: - [i]const XRenderData * rd: 渲染数据对象 - [i] int mode: 绘制模式 - [i] ulong color: 颜色值 - [i] int contourVAID: 值顶点属性对象ID - [i] const int * deformVAID: 矢量顶点属性对象ID数组 *return value: 无 {{anchor:updatesecondrenderdatatovbo}} **void updateSecondRenderDataToVBO(const XRenderData * rd, int mode, ulong color)** *function: 更新渲染数据到第二显示模型VBO中 *parameters: - [i]const XRenderData * rd: 渲染数据对象 - [i] int mode: 绘制模式 - [i] ulong color: 颜色值 *return value: 无 {{anchor:updaterenderdatatolineindex}} **int updateRenderDataToLineIndex(const XRenderData * rd, vector * lineIndex, int offset = 0)** *function: 更加边标志更新渲染视图数据到线段索引中(用于显示线段) *parameters: - [i]const XRenderData * rd: 渲染数据对象 - [i] vector * lineIndex: 线段顶点索引数组 - [i] int offset = 0: 偏移量 *return value: 无 {{anchor:updatelocalcontourdatatovbo}} **void updateLocalContourDataToVBO(const XRenderData * rd, const XArray * pcolor)** *function: 更新局部云图数据到VBO中 *parameters: - [i]const XRenderData * rd: 渲染数据对象 - [i] const XArray * pcolor: 颜色值 *return value: 无 {{anchor:drawmodelvbo}} **void drawModelVBO(int activeMode = Active_Normal, int edgeIndexCnt = 0)** *function: 绘制模型VBO *parameters: - [i]int activeMode = Active_Normal: 绘制模式 - [i] int edgeIndexCnt = 0: 边标志个数 *return value: 无 {{anchor:drawsecondmodelvbo}} **void drawSecondModelVBO(int activeMode = Active_Normal)** *function: 绘制第二模型VBO *parameters: - [i]int activeMode = Active_Normal: 绘制模式 *return value: 无 {{anchor:drawrenderdata}} **void drawRenderData(const XRenderData * rd, int mode = Active_Normal, int contourVAID = 0, const int * deformVAID = NULL)** *function: 直接渲染数据 *parameters: - [i]const XRenderData * rd: 渲染数据对象 - [i] int mode = Active_Normal: 绘制模式 - [i] int contourVAID = 0: 值顶点数组对象ID - [i] const int * deformVAID = NULL: 矢量顶点数组对象ID *return value: 无 {{anchor:drawvbo}} **void drawVBO(int target, int mode = Active_Normal)** *function: 绘制VBO *parameters: - [i]int target: 目标类型 - [i] int mode = Active_Normal: 绘制模式 *return value: 无 {{anchor:drawtriedgevbo}} **void drawTriEdgeVBO(int mode, int triEdgeIndexCnt = 0)** *function: 绘制带边标志的面片 *parameters: - [i]int mode: 绘制模式 - [i] int triEdgeIndexCnt = 0: 边标志个数 *return value: 无 {{anchor:drawsecondvbo}} **void drawSecondVBO(int target, int mode = Active_Normal)** *function: 绘制第二显示模型的VBO *parameters: - [i]int target: VBO类型 - [i] int mode = Active_Normal: 绘制模式 *return value: 无 {{anchor:createvbo}} **void createVBO(XVertexBuffer & bs, int count, int unitSize = sizeof(float), int dim = 1)** *function: 创建VBO *parameters: - [i]XVertexBuffer & bs: 顶点数组对象 - [i] int count: 顶点个数 - [i] int unitSize = sizeof(float): 数据类型大小 - [i] int dim: 数据维数 *return value: 无 {{anchor:drawinstancedvector}} **void drawInstancedVector(ShaderProgram * sp, const XRenderData * rd)** *function: 绘制实例化矢量 *parameters: - [i]ShaderProgram * sp: 着色器 - [i] const XRenderData * rd: 渲染数据对象 *return value: 无