我正在尝试使用Python和PyGame开始使用OpenGL .
我将使用PyGame而不是GLUT来完成所有初始化,窗口打开,输入处理等 .
但是,我的着色器无法编译,除非我准确指定OpenGL和配置文件的版本 .
他们使用书中的GLUT初始化进行编译:
glutInit()
glutInitDisplayMode(GLUT_RGBA)
glutInitWindowSize(400, 400)
# this is what I need
glutInitContextVersion(3, 3)
glutInitContextProfile(GLUT_CORE_PROFILE)
glutCreateWindow("main")
但是,像这样简单的PyGame初始化:
pygame.init()
display = (400, 400)
pygame.display.set_mode(display, pygame.DOUBLEBUF|pygame.OPENGL)
它没有指定确切的OpenGL版本3.3和CORE_PROFILE,同样的程序在尝试编译着色器时会失败:
RuntimeError:('着色器编译失败(0):0:2(10):错误:不支持GLSL 3.30 . 支持的版本是:1.10,1.20,1.30,1.00 ES和3.00 ES \ n',['\ n #version 330 core \ n在vec4位置布局(位置= 0); \ n void main()\ n {\ n \ nn \ _ <br_Position = position; \ n} \ n'],GL_VERTEX_SHADER)
我的问题是:如何使用PyGame进行初始化?
1 回答
我认为这:
可能是你想要的 . 它展示了如何在pygame和PyOpenGL中使用顶点着色器和片段着色器 . 如果您不使用PyOpenGL,那么您将不得不这样做 . 要下载它,只需运行:
在命令提示符/终端中
如果这不起作用,我建议您查看PyOpenGL安装页面以获取更多详细信息:
我在一个简短的示例中包含了我认为您尝试使用链接中的一些代码进行的操作 .
除了在pygame中加载着色器之外,它什么都不做 . 我相信这是你的主要目标 .