Ошибка при присоединении буфера глубины/трафарета к фреймбуферу

Я создаю буфер глубины/трафарета, вводя в OpenGL следующую серию команд:

glBindTexture(GL_TEXTURE_2D, 0)
glGenTextures(1, &TextureId)
glBindTexture(GL_TEXTURE_2D, TextureId)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 640, 480,  0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glBindTexture(GL_TEXTURE_2D, 0)

Затем я пытаюсь подключить его к фреймбуферу с помощью

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, TextureId, 0)

Но вызов glCheckFramebufferStatusEXT возвращает GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT. Если я не прикрепляю буфер трафарета глубины, то этот самый тест проходит нормально (но явно дисплей лажает).

У вас есть какие-нибудь идеи?

EDIT: Изменено: я упростил создание текстуры до базового формата текстуры.


person qdii    schedule 22.03.2012    source источник
comment
Возникают какие-либо ошибки GL?   -  person Dr. Snoopy    schedule 22.03.2012


Ответы (3)


Хорошо, проблема исчезла, когда я удалил все завершающие EXT…

person qdii    schedule 22.03.2012
comment
Я думаю, вы узнали, что нельзя смешивать расширения и ядро ​​в одной и той же функциональности. - person Dr. Snoopy; 22.03.2012

Текстура, которую вы прикрепляете к GL_DEPTH_STENCIL_ATTACHMENT, не содержит ни информации о глубине, ни трафарета. Если вы хотите прикрепить текстуру к GL_DEPTH_STENCIL_ATTACHMENT, убедитесь, что формат изображения имеет глубину и данные трафарета.

person Nicol Bolas    schedule 22.03.2012

Теперь версиям OpenGL не требуется расширение EXT~~~

person XiaJun    schedule 24.03.2012
comment
Я думал, что они все еще будут поддерживаться для обратной совместимости, но, видимо, смешивание версий EXT и не-EXT недопустимо :) - person qdii; 24.03.2012