我下载了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)
有谁知道出了什么问题或者我该怎么解决这个问题吗?任何帮助都将不胜感激。谢谢。
1条答案
按热度按时间wmvff8tz1#
在创建着色器之前,必须创建OpenGL窗口和上下文。每个OpenGL命令都需要一个OpenGL Context,如果没有上下文,则会失败。通常,OpenGL上下文是用OpenGL窗口创建的。这是OpenGL的一个缺点(OpenGL已经很老了),你不能创建一个没有窗口的着色器。至少你必须创建一个隐藏的窗口。使用Pygame,glfw或freeglut来创建窗口。使用 glfw 可以创建一个初始隐藏的窗口,freeglut 包含在PyOpenGL包中。
要使用Pygame创建OpenGL窗口,您需要将
OPENGL
标志添加到pygame.display.set_mode
。例如:然而,你需要用OpenGL来绘制所有的东西。请参阅我如何使用Pygame来绘制,同时也用Pyopengl来绘制?