pyOpenGL无法创建着色器

ippsafx7  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(151)

我下载了pyOpenGL,当我导入它时,我的程序运行得很好。但是,当我试图创建着色器时,出现了一个问题。下面是我的代码:

from OpenGL.GL import * 
import OpenGL.GL.shaders
computeShader = OpenGL.GL.glCreateShader(GL_COMPUTE_SHADER)

当我尝试运行这段代码时,它会抛出以下错误:Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
有谁知道出了什么问题或者我该怎么解决这个问题吗?任何帮助都将不胜感激。谢谢。

wmvff8tz

wmvff8tz1#

在创建着色器之前,必须创建OpenGL窗口和上下文。每个OpenGL命令都需要一个OpenGL Context,如果没有上下文,则会失败。通常,OpenGL上下文是用OpenGL窗口创建的。这是OpenGL的一个缺点(OpenGL已经很老了),你不能创建一个没有窗口的着色器。至少你必须创建一个隐藏的窗口。使用Pygameglfwfreeglut来创建窗口。使用 glfw 可以创建一个初始隐藏的窗口,freeglut 包含在PyOpenGL包中。
要使用Pygame创建OpenGL窗口,您需要将OPENGL标志添加到pygame.display.set_mode。例如:

pygame.display.set_mode(size, pygame.DOUBLEBUF| pygame.OPENGL)

然而,你需要用OpenGL来绘制所有的东西。请参阅我如何使用Pygame来绘制,同时也用Pyopengl来绘制?

相关问题