2012-03-22 154 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。如果我不附加深度模板缓冲区,这个测试很好(但显然是显示器被拧紧了)。

你们有什么线索吗?

编辑: 更改:我简化了纹理的创建到基本纹理的格式。

+0

任何GL错误被触发? – 2012-03-22 15:15:27

回答

2

好吧,这个问题时,我删除了所有尾随EXT消失......

+2

我想你知道你不能在同一功能中混用扩展和核心。 – 2012-03-22 18:03:31

2

你连接到GL_DEPTH_STENCIL_ATTACHMENT纹理中有没有深度,也没有模板的信息。如果要将纹理附加到GL_DEPTH_STENCIL_ATTACHMENT,请确保它的图像格式为depth and stencil data

1

现在OpenGL版本不需要EXT扩展~~~

+0

我认为他们仍然会支持向后兼容,但显然混合EXT和非EXT版本并不好:) – qdii 2012-03-24 09:36:36