【问题标题】:glVertexAttribPointer() can't find valid context on Wayland environment?glVertexAttribPointer() 无法在 Wayland 环境中找到有效上下文?
【发布时间】: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


【解决方案1】:

登录时需要将Wayland切换为Xorg!在 Wayland 上,您可以添加环境变量 PYOPENGL_PLATFORM=x11

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2021-10-23
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    相关资源
    最近更新 更多