具有单通道纹理附件的帧缓冲区对象? (颜色附件)
Framebuffer objects with single channel texture attachment? (Color attachment)
我希望片段着色器输出单个字节值。渲染到附加到帧缓冲区对象的单通道纹理。我只使用过默认的片段着色器来输出一个 vec4 颜色。这可能吗?如果我像这样将绑定到 fbo 的纹理初始化为颜色附件:
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);
如果是这样,我会更改片段着色器输出变量吗:
输出 vec4 颜色
至:
输出颜色?
(我正在尝试渲染高度图)
好吧,您的渲染目标不是整数纹理;它是一种规范化的整数格式,算作一个浮点数。因此,着色器的相应输出变量应该是 floating-point 类型。
但如果您愿意,可以使用 vec4
;任何不属于渲染目标的组件都将被丢弃。
我希望片段着色器输出单个字节值。渲染到附加到帧缓冲区对象的单通道纹理。我只使用过默认的片段着色器来输出一个 vec4 颜色。这可能吗?如果我像这样将绑定到 fbo 的纹理初始化为颜色附件:
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);
如果是这样,我会更改片段着色器输出变量吗:
输出 vec4 颜色
至:
输出颜色?
(我正在尝试渲染高度图)
好吧,您的渲染目标不是整数纹理;它是一种规范化的整数格式,算作一个浮点数。因此,着色器的相应输出变量应该是 floating-point 类型。
但如果您愿意,可以使用 vec4
;任何不属于渲染目标的组件都将被丢弃。