在opengl中使用特殊的键使我的电脑非常慢
Use of special keys in opengl makes my computer really slow
我写了一个opengl代码,在对象上绘制一些对象,灯光和纹理。特殊键,如箭头旋转纹理映射对象。但是如果我继续旋转它们10秒,我甚至无法关闭opengl窗口。我不发布我的代码,它有点长,我不知道它的哪一部分减慢了速度。
根据你在评论部分的回答,我想我知道是怎么回事了。
glutSpecialFunc调用箭头处理函数。在箭头处理程序:if(GLUT_KEY_UP){//旋转glutPostRedisplay()} if(GLUT_KEY_DOWN ....)……所以在
这不是在您的过剩程序中处理键盘事件的正确方法。实际上,呈现循环中完成的工作量会根据用户的按键次数而变化。
你应该有一个独立于键盘活动的主绘制循环来继续重新绘制场景,而不是将重新显示作为对击键的响应。您还需要为位置(x, y, z)和旋转角度设置状态变量。绘制例程简单地使用这些状态变量中的x、y、z和旋转信息绘制场景。
然后,对于键盘处理,您只需根据程序中支持的击键方式相应地更改这些状态变量。当主绘图循环与键盘处理程序自由异步运行时,它将自动响应这些更改。
相关文章:
- QT-如何在我的笔记本电脑上全屏显示Qlabel
- "... .exe hast stopped working"只发生在我朋友的电脑上,而不是我的电脑上
- 我的电脑不接受 s.length,但其他编译器可以
- 这段代码在我的电脑上编译,但不在竞赛服务器上的标准 C++98 编译器上编译
- Win32 API 会对我的电脑造成危险吗?
- 我的程序无法在某些电脑上运行
- 为什么在我的电脑上没有g++中的-O2,sqrt会变得更快
- 当我的电脑执行下面的代码时,为什么它以 5 开头
- 我的版本.exe无法在其他电脑上运行
- 我的 265GB RAM 笔记本电脑上的内存是否超过 8GB
- 无法使用 OpenCV 打开我的笔记本电脑相机
- 如何使用QFileDialog打开"我的电脑"
- 如何确保我的 direct3d 应用程序每次都能在任何电脑上运行
- 为什么当我制作一个链表时,我的电脑会崩溃
- 我如何用程序检查我的电脑是否在代理后面
- 当我的电脑得分达到100分时,游戏还没有结束
- Qt GUI应用程序可以在我的电脑上运行,但不能在其他电脑上运行
- 我的电脑怎么坏了?
- 为什么USACO分级师不接受我的"Prime Cryptarithm"解决方案?(我的电脑和在线评分机之间的输出差异)
- 在opengl中使用特殊的键使我的电脑非常慢