在OS X上的pyglet中启用OpenGL核心配置文件

时间:2015-10-07 20:35:04

标签: python macos opengl pyglet

我正在尝试在pyglet中使用最小的OpenGL着色器,但在编译时会出现以下错误:

ERROR: 0:1: '' :  version '420' is not supported

看起来这可能是由于pyglet使用了this question中的传统OpenGL配置文件,但如果是这种情况,我怎么能让pyglet使用不同的配置文件?我无法在任何地方找到它,并且觉得我必须遗漏一些明显的东西。

以下代码重现了该问题(改编自this example):

import pyglet
import pyglet.gl as gl
import ctypes

window = pyglet.window.Window()
handle = gl.glCreateProgram()
shader = gl.glCreateShader(gl.GL_VERTEX_SHADER)

source = """
#version 420

in vec3 vertex_position;

void main() {
    gl_Position = vec4(vertex_position, 1.0);
}
"""

src = ctypes.c_char_p(source)
gl.glShaderSource(shader, 1,
    ctypes.cast(ctypes.pointer(src),
    ctypes.POINTER(ctypes.POINTER(ctypes.c_char))), None)
gl.glCompileShader(shader)

# Retrieve compilation status
status = ctypes.c_int(0)
gl.glGetShaderiv(shader, gl.GL_COMPILE_STATUS, ctypes.byref(status))
# If compilation failed, print the log
if not status:
    gl.glGetShaderiv(shader, gl.GL_INFO_LOG_LENGTH, ctypes.byref(status))
    buffer = ctypes.create_string_buffer(status.value)
    gl.glGetShaderInfoLog(shader, status, None, buffer)
    print buffer.value

pyglet.app.run()
  • 硬件:MacBook Air(13英寸,2012年中)Intel HD Graphics 4000 1024 MB
  • OSX:10.10.1
  • Python:2.7.6
  • pyglet:1.2.4

1 个答案:

答案 0 :(得分:0)

似乎是一个开放的错误,旧的Google代码库中存在未解决的问题here,并且我已经提交了一个新错误here

所以我猜当前(从pyglet 1.2.4开始)它不可能得到一个> 3.0 OpenGL上下文。