从OpenGL ES 2.0规范第4.4.5节:
"表格4.5中未列出的格式,包括压缩的内部格式.无论颜色,深度还是模板可渲染,无论它们包含哪些组件."

然后有扩展这个表,例如:
如果我正确理解了规范,表4.5会影响纹理和渲染缓冲区格式.在这种情况下,例如,除非支持扩展OES_rgb8_rgba8(或RGBA的ARM_rgba8),否则每个组件8位的RGB和RGBA纹理不可着色.
在支持OES_rgb8_rgba8的测试设备上,以下纹理格式有效,即当作为颜色附件附加到FBO时帧缓冲完成:
而这些不是:
结果符合我的假设(至少在1台设备上),但我想知道我是否正确理解了规范或者这是否意外工作?
And*_*man 10
是的,您的假设是正确的.
官方规范中的可渲染格式列表正是OpenGL ES 2.0实现所需支持的.大多数支持比那里列出的更多.
但是,没有OpenGL/OpenGL ES的实现支持alpha或亮度纹理作为颜色可渲染.您可以使用纹理swizzle扩展和/或GLSL矢量混合来复制行为.扩展名:EXT_texture_rg添加可由纹理和渲染缓冲区使用的红色和红色/绿色图像格式.当要绘制成使用FBO一个或两个通道的图像格式这两种格式是非常有用的(因为GL_LUMINANCE,GL_ALPHA和GL_LUMINANCE_ALPHA不显色渲染的格式).
一般而言,渲染缓冲图像格式集是纹理图像格式的子集.您可以使用压缩图像格式(ES 2.0中的可选),亮度和Alpha图像格式进行纹理处理和像素传输操作,但渲染缓冲区不支持它们.这意味着虽然您可以使用这些纹理进行绘制,但是无法通过将它们附加到FBO来绘制它们.要绘制到纹理,它必须有一个图像格式,是双方一个渲染格式和纹理格式.
在历史记录中,有些渲染缓冲区格式不能用作纹理.多重采样格式就是一个例子,在创建初始FBO规范之后添加了多重采样纹理.
| 归档时间: |
|
| 查看次数: |
6438 次 |
| 最近记录: |