Включение профиля ядра OpenGL в pyglet на OS X
Я пытаюсь получить минимальный шейдер OpenGL, работающий в pyglet, но получаю следующую ошибку при компиляции:
ERROR: 0:1: '' : version '420' is not supported
Похоже, что это может быть связано с использованием Pyglet устаревшего профиля OpenGL, как в этом вопросе, но если это так, как я могу заставить Pyglet использовать другой профиль? Я не могу найти это нигде документально и чувствую, что, должно быть, мне не хватает чего-то очевидного.
Следующий код воспроизводит проблему (адаптировано из этого примера):
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 МБ
- OSX: 10.10.1
- Python: 2.7.6
- pyglet: 1.2.4
1 ответ
Решение
Кажется, это открытая ошибка, здесь есть нерешенная проблема в старом репозитории кода Google, и я подал новую ошибку здесь.
Поэтому я думаю, что в настоящее время (начиная с pyglet 1.2.4) невозможно получить контекст OpenGL> 3.0.