Не удалось создать геометрический шейдер с помощью python opengl (PyOpenGL) - PullRequest
0 голосов
/ 01 марта 2019

Я хочу создать geometry_shader с помощью glCreateShader (GL_GEOMETRY_SHADER), но получаю ошибку.

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    geometry_shader = glCreateShader(GL_GEOMETRY_SHADER)
  File "errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError (src/errorchecker.c:1218)
OpenGL.error.GLError: GLError(
        err = 1280,
        description = b'invalid enumerant',
        baseOperation = glCreateShader,
        cArguments = (GL_GEOMETRY_SHADER,),
        result = 0
)

Мое окружение: версия Python: 3.6.7
Строка версии профиля ядра OpenGL: 4.5 (профиль ядра)) Mesa 18.0.5
Версия ОС: Ubuntu 18.04 (Ubuntu 16.04 протестирована так же)
С с этого сайта Я знаю, что минимальная версия - 3.2.Так что это не должно быть проблемой версии.
Возможно ли ошибка в оболочке Python для opengl?Вот мой тестовый код.

import glfw
from OpenGL.GL import *
glfw.init()
glfw.window_hint(glfw.SAMPLES, 4)
window_size = (800, 600)
window = glfw.create_window(*window_size, 'Vehicle Model', None, None)
glfw.make_context_current(window)
vertice_shader = glCreateShader(GL_VERTEX_SHADER)
geometry_shader = glCreateShader(GL_GEOMETRY_SHADER)
glfw.terminate()

1 Ответ

0 голосов
/ 01 марта 2019

Убедитесь, что строка GL_VERSION вашего контекста фактически соответствует тому, что вы предполагаете.

Mesa, как правило, предоставляет вам только контекст OpenGL 2.1, если только вы специально не запросите версионный контекст Core, хотя и большедрайверы получают поддержку контекста совместимости с течением времени.

С GLFW вы обычно запрашиваете версии GL с помощью подсказок , заданных перед созданием окна, в частности, вы хотите установить значения для GLFW_CONTEXT_VERSION_MAJOR, GLFW_CONTEXT_VERSION_MINOR и GLFW_OPENGL_PROFILE.

...