我似乎找不到超过32位(GL.RGBA)的任何纹理格式。这不是WebGL所支持的吗?
发布于 2015-04-15 23:52:16
32位指的是每个元素本身是32位还是每个元素是8位,总之它们是32位(8位红色,8位绿色,8位蓝色,8位α)?
无论如何,32位浮点格式在WebGL1中都有扩展,所以32位是红色,32位是绿色,32位是蓝色,32位是alpha,这是128位纹理格式。
这些扩展是
gl.NEAREST
以外的其他内容gl.NEAREST
以外的其他内容要使用其中的任何一个,您必须启用每一个,如
var ext = gl.getExtension("OES_texture_float");
if (!ext) {
alertNoFloatSupportOrFallbackToOtherOption();
}
几乎所有的桌面GPU都支持所有4。移动设备通常只支持一半格式,有时不支持过滤。
在WebGL2中,这两种格式都是自动存在的,但是过滤它们的能力(OES_texture_float_linear
和OES_texture_half_float_linear
)仍然是可选的。
此外,许多移动设备不允许渲染浮动或半浮动纹理,就像笔记本电脑/台式机通常所做的那样。要检查它们是否允许呈现,请尝试在WebGL1上启用WebGL1或在WebGL2上启用EXT_color_buffer_float
。
还有一个相关的可选特性是你是否可以与浮点纹理混合。这个分机是EXT_float_blend
。它通常可以在笔记本电脑/台式电脑上使用,但在移动设备上(至少从iOS到iPhone6S)允许32位浮点纹理的呈现,因为苹果将其WebGL实现改为基于角度/金属。
https://stackoverflow.com/questions/29658210
复制