【发布时间】:2016-12-04 12:15:25
【问题描述】:
我正在尝试从 OpenGL 开始,使用 Python 和 PyGame。
我将使用 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): error: GLSL 3.30 不支持。支持的版本有:1.10、1.20、1.30、1.00 ES、 和 3.00 ES\n', ['\n #version 330 core\n layout(location = 0) in vec4 位置;\n void main()\n {\n gl_Position = 位置;\n }\n '], GL_VERTEX_SHADER)
我的问题是:如何使用 PyGame 进行初始化?
【问题讨论】:
-
你解决过这个问题吗?
标签: python opengl pygame glut pyopengl