我寫了一個opengl代碼,在對象上繪製一些對象,燈光和紋理。像箭頭這樣的特殊鍵可以旋轉我的紋理映射對象。但如果我繼續旋轉它們約10秒鐘,我甚至無法關閉opengl窗口。我不發佈我的代碼,它有點長,我不知道它的哪一部分會降低速度。在opengl中使用特殊鍵讓我的電腦真的很慢
回答
根據你在評論部分的回答,我想我明白髮生了什麼。
glutSpecialFunc調用我的箭頭處理函數。在箭頭處理程序: 如果(GLUT_KEY_UP){//旋轉glutPostRedisplay();}如果(GLUT_KEY_DOWN ....) ......等等
這並不是處理鍵盤的正確方法您的大量程序中的事件。實際上,您的渲染循環中完成的工作量因用戶的按鍵次數而異。
而不是發佈響應按鍵重新顯示,而應該有一個主要繪圖循環,繼續重繪獨立於鍵盤活動的場景。您還需要具有位置(x,y,z)的狀態變量和查看旋轉的角度。繪圖例程簡單地使用這些狀態變量中的x,y,z和旋轉信息繪製場景。
然後,對於您的鍵盤處理,只需根據您在程序中支持的擊鍵來適當更改這些狀態變量即可。主繪圖循環將自動響應這些更改,因爲它可以與鍵盤處理程序異步自由運行。
如果您熟悉Python和Pyglet,下面是一個簡單的opengl程序的一個很好的例子,它使用我正在談論的技術:https:// github .com/fogleman/Minecraft/blob/master/main.py –
它幫助了一些人,但是現在它在~20秒後開始。有沒有像opengl中的東西有限的堆棧?也許它正在被填滿? –
- 1. 爲什麼機器人仿真器是很慢的我的電腦上
- 2. Java減慢我的電腦
- 3. 如何在我的電腦得到的字體使用的特殊應用
- 4. UIDocumentInteractionController真的很慢
- 5. Pygame真的很慢
- 6. lockCanvas()真的很慢
- 7. FileOutputStream真的很慢
- 8. MimeMessage.saveChanges真的很慢
- 9. cURL真的很慢
- 10. SQLite真的很慢
- 11. 是我的電腦故障,或者android模擬器很慢
- 12. tableView滾動真的很慢 - 我打電話太多的方法?
- 13. 我的電腦是否支持OpenGL 2.1?
- 14. 遞歸在C++中真的很慢嗎?
- 15. 在postgres中真的很慢性能
- 16. PyQt5的OpenGL swapBuffers很慢
- 17. C - 拆分減慢我的電腦
- 18. GLFW pollevents()真的,真的很慢
- 19. OpenGL窗口很慢
- 20. Grunt LiveReload真的很慢
- 21. 真的很慢循環
- 22. SMTP郵件真的很慢
- 23. std :: cin真的很慢
- 24. Groovy withBatch真的很慢
- 25. Apache真的很慢別名
- 26. OpenAtrium真的很慢嗎?
- 27. Slackware 12真的很慢JDBC
- 28. 真的很慢AMI發佈
- 29. Spring Tool Suite真的很慢
- 30. Facebook Graph API真的很慢
你用什麼函數調用來讀取按鍵? –
glutSpecialFunc調用我的箭頭處理函數。 在箭頭處理程序: 如果(GLUT_KEY_UP) {//旋轉 glutPostRedisplay();}如果 (GLUT_KEY_DOWN ....) ......等等。 –
找出它的哪一部分首先放慢速度,然後發佈一個問題 –