OpenGL - 全屏时动画卡顿

时间:2010-10-19 19:06:58

标签: vb.net opengl animation

我目前遇到了关于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?

1 个答案:

答案 0 :(得分:1)

  

我的印象是,无论在调整窗口大小时缩放的正交二维图形中的窗口大小,绘图时间总是花费相同的时间。这是正确的假设吗?

如果只有:)

更多像素需要更多内存带宽/着色器单元/等。查看fillrate