2012-03-22 2 views
1

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

+0

Любые ошибки GL запускаются? –

ответ

2

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

+2

Я думаю, вы узнали, что вы не можете смешивать расширения и ядро ​​в той же функциональности. –

2

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

1

В настоящее время версии OpenGL не нуждаются в расширении EXT ~~~

+0

Я думал, что они все равно будут поддерживаться для обратной совместимости, но, по-видимому, смешивание версий EXT и не-EXT не в порядке :) – qdii

Смежные вопросы