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
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
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