OpenGL的GL_Select模式的效率问题(转)
来源:互联网 发布:防伪制作软件 编辑:程序博客网 时间:2024/06/05 05:10
OpenGL的GL_Select模式的效率问题
http://www.cnblogs.com/hesicong/archive/2007/02/12/648647.aspx
每一本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数据结构,对于通用的程序可能不太适用吧。
我重点要提到的是它的效率。
今 天我在弯管机程序里面多加了一些代码,实现可以选择机器的各个部件。但是发现每次点选的时候反应速度很慢,以至于我可以看到明显的停顿。而在直接渲染的时 候就没有这个问题,相当流畅。最后我用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模式的效率问题(转)
- gluLookAt()与glRenderMode(GL_SELECT)的使用
- 五种单例模式的效率问题
- 关于OpenGL ES绘制效率问题的认识
- OpenGL选择与拾取GL_SELECT 附源码
- opengl的选择模式
- OpenGL 的选择模式
- Vector的效率问题
- 循环的效率问题
- 索引效率的问题
- memcpy的效率问题
- Dynamic_cast的效率问题
- OpenVPN的效率问题
- 程序效率的问题
- 程序效率的问题
- insert的效率问题
- 集合的效率问题
- memset的效率问题
- SQLServer和Oracle的常用函数对比
- 找工作(二)
- mapx 使用layerinfo 添加shape 文件层.(VB)
- 超酷代码:来自 COM 经验的八个教训
- ASP.NET页面间的传值方法
- OpenGL的GL_Select模式的效率问题(转)
- 程序人生:Facebook的23岁创始人
- 失落的人真的无法走出来
- 用DETOURS库获取NT管理员权限
- 在ASP.NET AJAX中,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有母版页的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本时,这就需要在Content-page中使用ScriptMa
- Fedora hp laserjet 100 series printer configuration
- 使用WINPCAP获得已安装网卡的详细信息
- 去广工考ITAT的photoshop
- 帮帮顶下