Включение профиля ядра 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.

Другие вопросы по тегам