Тесселяция в Go-GL

Я пытаюсь создать простой треугольник, используя привязки Golang OpenGL

Библиотека не претендует на поддержку шейдеров тесселяции, но я просмотрел исходный код, и добавление правильных привязок не показалось мне хитрым. Поэтому я его разветвил и попытался добавить правильные константы в gl_defs.go.

Привязки по-прежнему прекрасно компилируются, как и моя программа, и когда я действительно пытаюсь использовать новые привязки, дела идут странно. Программа переходит от отображения красиво кружащего треугольника к черному экрану всякий раз, когда я на самом деле пытаюсь включить шейдеры тесселяции.

Я следую вместе с OpenGL Superbible (6-е издание) и использую их шейдеры для этого проекта, поэтому я не представляю, что использую сломанные шейдеры (в любом случае они не выдают журнал ошибок). Но если сами шейдеры могут ошибаться, их можно найти в setupProgram() функционировать здесь.

Я уверен, что моя видеокарта поддерживает тесселяцию, потому что печать версии openGL возвращается 4.4.0 NVIDIA 331.38 ,

Итак, мои вопросы:

Есть ли причина, по которой добавление привязок го для тесселяции не сработает? Привязки кажутся довольно простыми. Я неправильно добавляю новые привязки?

Если это должно работать, почему это не работает для меня? Что я здесь не так делаю?

1 ответ

Решение

Шаги, которые стоит предпринять:

  1. Ваш драйвер и видеокарта могут поддерживать шейдеры тесселяции, но контекст GL, который вам возвращает привязка, может относиться к более ранней версии OpenGL. Пытаться glGetString​(GL_VERSION​) и посмотрим, что вы получите.
  2. Ты звонишь glGetError в основном везде и собственно проверяет его значения? Обеспечивает ли эта привязка возвращаемые значения ошибок? Если так, вы проверяете это?
Другие вопросы по тегам