簡體   English   中英

深度紋理作為顏色附件

[英]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_COMPONENT16GL_DEPTH_COMPONENT24_OESGL_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM