[英]Depth texture as color attachment
我想將深度紋理作為顏色附件附加到幀緩沖區。 (我在iOS上,並且支持GL_OES_depth_texture)
所以我設置了這樣的紋理:
glGenTextures(1, &TextureName);
glBindTexture(GL_TEXTURE_2D, TextureName);
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, GL_DEPTH_COMPONENT, ImageSize.Width, ImageSize.Height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, 0);
glGenFramebuffers(1, &ColorFrameBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, ColorFrameBuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, TextureName, 0);
但是現在,如果我檢查幀緩沖區狀態, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
得到GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
我在這里做錯了什么?
我還嘗試了一些與GL_DEPTH_COMPONENT16
, GL_DEPTH_COMPONENT24_OES
, GL_DEPTH_COMPONENT32_OES
組合,但這些組合都不起作用(也支持GL_OES_depth24)
你不能 具有深度內部格式的紋理只能附加到深度附件。 具有內部顏色格式的紋理只能附加到顏色附件。
如先前的回答所述,您不能將深度格式的紋理附加為彩色表面。 現在查看您的評論,您實際上是在渲染為1通道浮點格式之后。
您可以查看http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt ,該文件可讓您使用浮點格式的紋理格式。
然后,您可以將紋理初始化為僅包含1個通道的Alpha貼圖。
glTexImage2D(GL_TEXTURE_2D,0,GL_ALPHA,ImageSize.Width,ImageSize.Height,0,GL_ALPHA,GL_FLOAT,0);
根據您的設備支持的擴展名,此方法可能有效也可能無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.