OpenGL的GL_Select模式的效率问题
2007-02-12 20:13
295 查看
每一本OpenGL入门的书都会讲到OpenGL的Select模式,它采用一种方法使得可以获取当前鼠标点选的几何图形。简单的来说这种方式就是首先调
整Projection矩阵,使得你透过从鼠标点选附近的一个正方形(大小可设置)看到的世界。然后开始绘制,当每一次绘制的时候都会判断你会不会看到。
如果看到,那么,你就是选择了这个几何图形了。更为具体的过程可以参见相关的书籍。
我重点要提到的是它的效率。
今
天我在弯管机程序里面多加了一些代码,实现可以选择机器的各个部件。但是发现每次点选的时候反应速度很慢,以至于我可以看到明显的停顿。而在直接渲染的时
候就没有这个问题,相当流畅。最后我用PerformanceCounter计时,一步一步的找问题的根源,发现在glRenderMode
(GL_Select)设置以后,在执行相同的绘图指令会相当的慢。经我测试,在我6600GT显卡上,使用官方93.50驱动程序,渲染相同的画面,用
选择模式以后平均速度低于10%,也就是说渲染时间增加10倍以上。较为简单的图形渲染起来性能也低于普通渲染的30%。而这样所造成的后果就是严重的延
迟。
刚开始我以为是我程序优化的问题,然而即便所有的物体都使用显示列表,也存在这样的问题。我想到这可能是OpenGL实现上的问题。
晚上我把Quadro FX1100专业显卡(芯片和GeForce FX5700相同)装上以后,使用一样的93.50驱动,再进行测试。发现情况有所好转,选择模式下平均速度是正常渲染模式下面的60%左右。已经感觉不出延时。
然后我又在虚拟机下面进行测试,然而得到的现象却截然不同。虚拟机下面的SVGA显卡在选择模式下面的速度比正常渲染快10倍左右。
很是迷茫,毕竟选择模式下面要多一些操作,速度应该要慢一些,怎么会快这么多呢?虚拟机的测试可信么?是NVIDIA的驱动的问题么?网络上也有人提到MAYA在NVIDIA显卡上面模式东西的时候运行很慢,可能问题是出现在驱动上吧。
另外身边又没有ATI显卡,所以暂时不能用ATI显卡作测试。但从网络上很多人反馈得知,ATI也存在相同的问题。
解决方法也有,就是自己写相关的程序,看一个人的回帖说比较简单,而他用的是BSP数据结构,对于通用的程序可能不太适用吧。
整Projection矩阵,使得你透过从鼠标点选附近的一个正方形(大小可设置)看到的世界。然后开始绘制,当每一次绘制的时候都会判断你会不会看到。
如果看到,那么,你就是选择了这个几何图形了。更为具体的过程可以参见相关的书籍。
我重点要提到的是它的效率。
今
天我在弯管机程序里面多加了一些代码,实现可以选择机器的各个部件。但是发现每次点选的时候反应速度很慢,以至于我可以看到明显的停顿。而在直接渲染的时
候就没有这个问题,相当流畅。最后我用PerformanceCounter计时,一步一步的找问题的根源,发现在glRenderMode
(GL_Select)设置以后,在执行相同的绘图指令会相当的慢。经我测试,在我6600GT显卡上,使用官方93.50驱动程序,渲染相同的画面,用
选择模式以后平均速度低于10%,也就是说渲染时间增加10倍以上。较为简单的图形渲染起来性能也低于普通渲染的30%。而这样所造成的后果就是严重的延
迟。
刚开始我以为是我程序优化的问题,然而即便所有的物体都使用显示列表,也存在这样的问题。我想到这可能是OpenGL实现上的问题。
晚上我把Quadro FX1100专业显卡(芯片和GeForce FX5700相同)装上以后,使用一样的93.50驱动,再进行测试。发现情况有所好转,选择模式下平均速度是正常渲染模式下面的60%左右。已经感觉不出延时。
然后我又在虚拟机下面进行测试,然而得到的现象却截然不同。虚拟机下面的SVGA显卡在选择模式下面的速度比正常渲染快10倍左右。
很是迷茫,毕竟选择模式下面要多一些操作,速度应该要慢一些,怎么会快这么多呢?虚拟机的测试可信么?是NVIDIA的驱动的问题么?网络上也有人提到MAYA在NVIDIA显卡上面模式东西的时候运行很慢,可能问题是出现在驱动上吧。
另外身边又没有ATI显卡,所以暂时不能用ATI显卡作测试。但从网络上很多人反馈得知,ATI也存在相同的问题。
解决方法也有,就是自己写相关的程序,看一个人的回帖说比较简单,而他用的是BSP数据结构,对于通用的程序可能不太适用吧。
相关文章推荐
- OpenGL的GL_Select模式的效率问题(转)
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- OpenGL选择与拾取GL_SELECT 附源码
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高) 这段时间一直在搞视频格式的转换问题,终于最近将一个图片的YUV
- VC+ADO+MySQL执行select count(*)效率问题
- OpenGL(二十一) glPolygonOffset设置深度偏移解决z-fighting闪烁问题
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- select 效率问题
- OpenGL禁用深度测试 解决正投影贴图模式下集显电脑不能显示文字问题。
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- js 中在select 插入大量option效率问题
- opengl中GL_TRIANGLES的显示问题
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 关于NVIDIA 的 OpenGL回退到软件模式的问题。
- 解决单例设计模式中的懒汉设计模式存在线程安全问题(并且在一定程度上提高效率)的一种解决方法