2015-10-07 27 views
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
+0

OSX不支持GL 4.2。它將支持版本2.1作爲傳統的向後兼容性,在覈心配置文件中支持3.2到4.1。所以你可能已經有了一個核心配置文件。 'glGetString(GL_VERSION)'會告訴你你得到了什麼。 – derhass

+0

謝謝@derhass知道4.2永遠不會有用!我嘗試使用'#version 320'代替,並得到了類似的錯誤。嘗試glGetString(GL_VERSION)給我2.1 INTEL-10.0.86,所以它似乎像pyglet使用傳統的配置文件? – chromy

回答

0

似乎是一個開放的bug,在舊的Google代碼回購中存在一個未解決的問題here,並且我提交了一個新的錯誤here

所以我想當前(pyglet 1.2.4)不可能獲得> 3.0的OpenGL上下文。

相關問題