pyopengl - PyOpenGL 过剩窗口
问题描述
所以我最近开始使用 PyOpenGL 的 GLUT 模块并且找不到任何简单的教程(链接到任何将不胜感激),我只想使用 创建一个 glut 窗口glutCreateWindow('window')
,但是一旦窗口弹出它就会消失。我尝试glutMainLoop()
在我的主要功能中使用,但它只是给出了一个错误。
from OpenGL.GLU import *
from OpenGL.GL import *
glutInit()
def main():
glutCreateWindow('window')
glutMainLoop()
if __name__=='__main__':main()
解决方案
您必须设置glutDisplayFunc
回调。glut 主循环调用显示回调。
最小的例子:
from OpenGL.GLUT import *
from OpenGL.GLU import *
from OpenGL.GL import *
glutInit()
def display():
glClearColor(1, 0, 0, 0) # red
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
# your rendering goes here
# [...]
glutSwapBuffers()
glutPostRedisplay()
def main():
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA)
glutCreateWindow('window')
glutDisplayFunc(display)
glutMainLoop()
if __name__=='__main__':
main()
glutInitDisplayMode
设置初始显示模式。glutSwapBuffers
交换当前窗口蚂蚁的缓冲区,从而更新显示。glutPostRedisplay
将当前窗口标记为重新显示,因此会导致显示不断重绘,这对于动画来说是必需的。
另请参阅立即模式和旧版 OpenGL
推荐阅读
- python - 将参数传递给变量引用的函数
- magento - 强制将过滤器应用于销售订单网格
- javascript - parsley.js 可选地验证数字输入
- javascript - Getting the basename of each subpath in a string
- selenium-webdriver - Setting Selenium delay between testcases with in Test suite in Robotframework
- swift - 按名称引用多个标签
- java - WebSphere classloader is it different then in tomcat?
- julia - 同时包含 Julia 文件 LoadError: StackOverflowError in Julia?
- python - 当训练数据位于多个不同长度时间序列的 csv 文件中时,如何提供 LSTM?
- wordpress - WordPress 和 Chromebook 的 CORS 问题