2
可以指定什麼緩衝器繪製使用
glDrawBuffer()如何關聯到繪製的深度紋理
例如
GLenum緩衝器[] = {} GL_COLOR_ATTACHMENT0 glDrawBuffers;
glDrawBuffers(1,buffers);
好吧,這是有道理的。
雖然深度紋理怎麼樣?
所以我們在這裏我們創建一個幀緩衝
glGenFramebuffers(1, &m_uifboHandle);
// Initialize FBO
glBindFramebuffer(GL_FRAMEBUFFER, m_uifboHandle);
unsigned int m_uiTextureHandle[2];
glGenTextures(2, m_uiTextureHandle);
glBindTexture(GL_TEXTURE_2D, m_uiTextureHandle[x]);
// Reserve space for our 2D render target
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, iInternalFormat, uiWidth, uiHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_uiTextureHandle[0], 0);
//now the depth
glBindTexture(GL_TEXTURE_2D, m_uiTextureHandle[1]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, uiWidth, uiHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_uiTextureHandle[1], 0);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
因此,如果這些步驟基本上是:
1)作出的框架來處理渲染到
2)爲我們提供了一個位置,以附件0寫入
3)創建我們的深度附件
現在我怎麼寫它?我看到渲染自動呈現給它的例子,但我想了解綁定如何寫入它的作品。
看到多數民衆贊成我一直在想,但我可以得到顏色附件工作正常,但我不能深入工作。 – 2014-08-30 23:36:46