2015-10-07 1 views
2

Je suis en train d'obtenir un shader OpenGL minimal travaillant dans pyglet mais obtenir l'erreur suivante lors de la compilation:Activation du profil de base OpenGL dans pyglet sur OS X

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

Il semble que cela pourrait être dû à pyglet utilisant le profil OpenGL hérité comme dans this question mais si c'est le cas comment puis-je obtenir pyglet pour utiliser un profil différent? Je ne peux pas le trouver documenté n'importe où et je sens qu'il me manque quelque chose d'évident.

Le code suivant reproduit le problème (adapté de 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() 
  • Matériel: MacBook Air (13 pouces, mi-2012) Intel HD Graphics 4000 1024 Mo
  • OSX: 10.10. 1
  • python: 2.7.6
  • pyglet: 1.2.4
+0

OSX ne prend pas en charge GL 4.2. Il prendra en charge la version 2.1 en tant que compatibilité ascendante héritée et 3.2 à 4.1 en profil de base. Vous avez peut-être déjà un profil de base. 'glGetString (GL_VERSION)' vous dira ce que vous avez. – derhass

+0

Merci @derhass il est utile de savoir que 4.2 n'aurait jamais fonctionné! J'ai essayé d'utiliser '#version 320' à la place et j'ai eu une erreur similaire. Essayer glGetString (GL_VERSION) me donne 2.1 INTEL-10.0.86 donc il semble que pyglet utilise le profil hérité? – chromy

Répondre

0

Semble être un bug ouvert, il ya un problème non résolu here dans l'ancien code de dépôt de Google, et j'ai déposé un nouveau bug here.

Donc je suppose que pour l'instant (à partir de pyglet 1.2.4) il n'est pas possible d'obtenir un contexte OpenGL> 3.0.