1.背景介绍
君方智能设计平台(ShipMaker),使用OCC中的图形构造功能和图形渲染功能。OCC的图形渲染采用Opengl API 并且将所有图形渲染相关的逻辑放置在TKOpenGL模块中。
性能场景1:
大场景中包含2万个构件,超过300万三角面片时,对模型做视图的缩放、旋转和旋转等操作,存在卡顿现象,帧率小于10。
性能场景2:
在小场景中,动态绘制墙等线性构件时,非常流畅。当场景中包含2万个构件,超过300万三角面片时,动态创建线性构件墙,鼠标在移动过程中会动态绘制墙构件,存在卡顿现象。
对于场景1和场景2,在笔者的配置机器上,大场景中超过5万构件,2000~3000万面片,应该不存在卡顿现象。经过调试追踪,OCC中显示渲染逻辑存在性能卡点,通过优化渲染逻辑应该可以大大提升渲染性能。
2.TKOpenGL模块分析
1.场景数据
渲染相关的场景数据包括:渲染物体集合(OpenGl_LayerList),光照数据(Graphic3d_LightSet),帧缓存(OpenGl_FrameBuffer), ....
我们只关注渲染物体集合(OpenGl_LayerList)中的数据,即XC-Lab显示场景中绘制的墙