我对内部格式,格式和类型有点困惑。那么深度依恋点是什么?
如果我使用RenderBuffer,我认为如果我不想使用模板,这是有效的代码:
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRB);
但是如果我想能够读取深度值,我必须将纹理附加到深度附着点。所以我必须使用参数"内部格式","格式"来调用glTexImage2D函数。和"键入"。
在这种情况下,我应该选择哪种内部格式,格式和类型?我可以将以下组合用于深度附件吗? (按以下顺序:内部格式,格式和类型)
GL_UNSIGNED_INT类型对第二种情况有效吗?那个的真实意义是什么?它会为每个片段分配4个字节吗?在一些教程中,他们使用GL_UNSIGNED_BYTE作为类型参数。哪个是正确的?
由于
修改:
澄清了我对我感兴趣的参数的问题。
答案 0 :(得分:2)
深度值不是颜色值。因此,如果要在纹理中存储深度值,则纹理必须使用internal format that contains depth information。
pixel transfer format/type参数,即使您实际上并未实际传递数据,对于内部格式仍然必须合理。由于内部格式包含深度信息,因此您的像素传输格式必须指定深度信息:GL_DEPTH_COMPONENT
。
对于像素转移类型,您应该将32F
作为GL_FLOAT
回复。