【发布时间】:2022-11-19 02:46:22
【问题描述】:
我试着画彩色三角形。我想使用现代 OpenGL 并通过顶点属性数组转换数据。
顶点着色器和片段着色器只是将颜色从输入传递到输出,不包含任何有趣的代码
pg.init()
triangle = np.array( triangle, dtype=np.float32 )
triangle_buffer = glGenBuffers( 1 )
glBindBuffer( GL_ARRAY_BUFFER, triangle_buffer )
glBufferData( GL_ARRAY_BUFFER, triangle.nbytes, triangle, GL_STATIC_DRAW )
vertex_shader = compileShader( vertex_src, GL_VERTEX_SHADER )
fragment_shader = compileShader( fragment_src, GL_FRAGMENT_SHADER )
shader_program = compileProgram( vertex_shader, fragment_shader )
glUseProgram( shader_program )
glEnableVertexAttribArray( 0 )
glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, triangle.itemsize * 6, ctypes.c_void_p( 0 ) )
当我尝试运行这个程序时抛出异常。
OpenGL.error.Error: Attempt to retrieve context when no valid context
Process finished with exit code 1
我做错了什么?
【问题讨论】:
-
我无法重现该问题。
app = App()和app.run()工作正常。 -
哼!在将 Wayland 切换到 Xorg 之后它的工作!
-
在 Wayland 上,它需要添加 env PYOPENGL_PLATFORM=x11 并且它的工作
标签: python opengl pyopengl xorg wayland