Ошибка при подключении буфера глубины / трафарета к кадровому буферу - PullRequest
1 голос
/ 22 марта 2012

Я создаю буфер глубины / трафарета, выполняя эту серию команд для 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 : Изменено: я упростил создание текстуры до базового формата текстуры.

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

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

2 голосов
/ 22 марта 2012

Хорошо, проблема исчезла, когда я удалил весь трейлинг EXT ...

1 голос
/ 24 марта 2012

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

...