基本上,我的程序使用帧缓冲区对象渲染到 3D 纹理。如果我附加到 fbo 的 3D 纹理是 GL_RGB8 格式,即每纹素 24 位,则没有问题。仅使用其中的 8 位。当我尝试使用 GL_ALPHA8(每纹素 8 位)作为 3D 纹理的内部格式时,会出现问题,渲染结果为空白。我用来渲染到 fbo 的 cg 片段着色器如下所示:
void F_PureDecoder(
float3 vIndexCoord : TEXCOORD0,
out float color :COLOR)
{
... ...
color=float4(fL3,fL3,fL3,fL3);
}
我做错了什么还是 fbo 不支持渲染到 8 位纹素纹理?我主要不确定片段着色器的输出格式是否正确。因为帧缓冲区是 8 位,但输出是 24 位。我应该修改片段着色器的输出格式吗?如果是这样,我应该使用什么格式?
非常感谢您的任何意见!