2013-02-11 150 views
1

我想通過GLSL渲染模具緩衝區紋理,但我找不到它可能。 使用GL_DEPTH24_STENCIL8格式將模板紋理與深度紋理一起打包。 我發現你不能渲染那個紋理,至少不是模板數據,但是深度數據是使用紋理的x/y/z值渲染的。所以我想出了一個超級想法,試圖將模板緩衝區刷新爲GL_RED紋理。這在某種程度上可能嗎?將模板緩衝區模糊到顏色緩衝區中。可能嗎?

這裏是你將如何從FBO1的blit模板緩存到FBO2:

glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, FBO1); 
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, FBO2); 
glBlitFramebufferEXT(0, 0, X, Y, 0, 0, X, Y, GL_STENCIL_BUFFER_BIT, GL_NEAREST); 
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0); 

而且這裏是我卡住了。有任何想法嗎?

回答

2

只能將一種類型的數據轉移到其自己的數據類型中。您不能將顏色數據轉移到GL_DEPTH_COMPONENT,也不能將深度數據轉移爲顏色。而且你也不能將模版塗成一種顏色。

做你想做的事情的唯一方法是使用ARB_stencil_texturing,這是GL 4.3的一部分。它是否可用於您的硬件取決於您的硬件。