我目前遇到了关于OpenGL动画的问题。所有旋转的屏幕上都有200到10000个齿轮。当窗口未处于最大化视图时,我的CPU始终以大约10-20%的速度运行。无需尖峰,动画中没有卡顿,无论屏幕上的齿轮数量如何,它都能完美平滑地运行。当我最大化窗户时,一切都崩溃了。我的CPU最大化,我开始得到CPU使用率的奇怪峰值,结果动画开始结果,它看起来真的很难看,即使我屏幕上只有200个齿轮。
我的动画技术如下:
While Animating
Calculate current rotation angle based on a running timer
draw Image
call glFlush()
End While
如果有帮助,我在VB.net中使用Tao框架。我没有执行除计算上述旋转角度以外的任何其他计算,并在绘制图像的方法中执行一些glRotateD和glscaleD。
此外,我想我的印象是,无论正交二维图形中的窗口大小是否在缩小窗口大小时缩放,绘图时间总是花费相同的时间。这是正确的假设吗?
非常感谢任何帮助=)
请注意,我之前看到动画在全屏播放时非常流畅。每隔一段时间,OpenGL就会决定它很开心并使用10-20%的CPU(与未最大化时相同)全屏运行。我没有确定导致这种情况的原因,因为它会完美地运行一次,然后不会改变任何东西,我会再次运行并遇到不稳定因素。我只是想找出导致动画减速并消除它的原因。
我在我的程序上运行了一个点跟踪,它说swapBuffers方法使用了55%的处理时间,即使我从未明确调用该方法。我可以消除其他方法调用的方法,或者这只是OpenGL的“死时间”方法将动画限制为60 fps?
答案 0 :(得分:1)