2
我試圖得到一個最小的OpenGL着色器在pyglet工作,但得到以下錯誤,當它編譯:啓用在pyglet OpenGL的核心配置文件在OS X
ERROR: 0:1: '' : version '420' is not supported
看起來這可能是由於pyglet使用舊版OpenGL配置文件,如this question,但是如果是這種情況,我怎樣才能讓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年中),英特爾高清顯卡4000 1024 MB
- OSX:10.10。 1
- 的Python:2.7.6
- pyglet:1.2.4
OSX不支持GL 4.2。它將支持版本2.1作爲傳統的向後兼容性,在覈心配置文件中支持3.2到4.1。所以你可能已經有了一個核心配置文件。 'glGetString(GL_VERSION)'會告訴你你得到了什麼。 – derhass
謝謝@derhass知道4.2永遠不會有用!我嘗試使用'#version 320'代替,並得到了類似的錯誤。嘗試glGetString(GL_VERSION)給我2.1 INTEL-10.0.86,所以它似乎像pyglet使用傳統的配置文件? – chromy