glBindFramebuffer вызывает ошибку GL «недопустимая операция» при использовании цели GL_DRAW_FRAMEBUFFER - PullRequest
1 голос
/ 12 октября 2011

Я использую OpenGL 3.3 на GeForce 9800 GTX.Справочные страницы для 3.3 говорят, что недопустимая операция с glBindFramebuffer указывает идентификатор кадрового буфера, который не был возвращен из glGenFramebuffers.Тем не менее, я вывожу идентификатор, возвращенный glGenFramebuffers, и идентификатор, который я позже отправлю, в glBindFramebuffer, и они совпадают.

Ошибка GL исчезает, однако, когда я изменяю целевой параметр в glBindFramebuffer с GL_DRAW_FRAMEBUFFER на GL_FRAMEBUFFER.Документация говорит, что я должен быть в состоянии использовать GL_DRAW_FRAMEBUFFER.Есть ли случаи, когда вы не можете связать с GL_DRAW_FRAMEBUFFER?Есть ли вред от использования GL_FRAMEBUFFER вместо GL_DRAW_FRAMEBUFFER?Является ли это симптомом более серьезной проблемы?

1 Ответ

2 голосов
/ 12 октября 2011

Если glBindFramebuffer(GL_FRAMEBUFFER) работает, когда glBindFramebuffer(GL_DRAW_FRAMEBUFFER) не работает, а мы не говорим о EXT-версии этих функций и перечислений (обратите внимание на отсутствие суффиксов "EXT"), то, вероятно,что вы, возможно, сделали что-то не так.GL_INVALID_OPERATION - это ошибка, которую вы получаете, когда конфликтует несколько комбинаций параметров, которые зависят от состояния.Если бы это было просто отсутствующее перечисление, вы должны получить GL_INVALID_ENUM.

Конечно, это может быть просто ошибка драйвера.Но нет способа узнать, не зная, как выглядит ваш код.

...