EXT_texture_norm16 扩展
EXT_texture_norm16
扩展是 WebGL API 的一部分,提供了一组新的 16 位有符号归一化和无符号归一化格式(定点纹理、渲染缓冲区和纹理缓冲区)。
启用此扩展时
WebGLRenderingContext.texImage2D()
和WebGLRenderingContext.texSubImage2D()
方法接受此扩展提供的新的格式。- 16 位归一化定点类型
ext.R16_EXT
、ext.RG16_EXT
和ext.RGBA16_EXT
可用作可渲染颜色的格式和渲染缓冲区,并可以以这些格式创建。
可以使用 WebGLRenderingContext.getExtension()
方法获取 WebGL 扩展。有关更多信息,请参阅 使用扩展,该内容位于 WebGL 教程 中。
注意:此扩展仅适用于 WebGL 2 上下文。
常量
ext.R16_EXT
-
红色 16 位无符号格式。可渲染颜色。
ext.RG16_EXT
-
RG 16 位无符号格式。可渲染颜色。
ext.RGB16_EXT
-
RGB 16 位无符号格式。
ext.RGBA16_EXT
-
RGBA 16 位无符号格式。可渲染颜色。
ext.R16_SNORM_EXT
-
红色 16 位有符号归一化格式。
ext.RG16_SNORM_EXT
-
RG 16 位有符号归一化格式。
ext.RGB16_SNORM_EXT
-
RGB 16 位有符号归一化格式。
ext.RGBA16_SNORM_EXT
-
RGBA 16 位有符号归一化格式。
示例
启用扩展
js
let ext = gl.getExtension("EXT_texture_norm16");
纹理格式
启用 EXT_texture_norm16
后,WebGLRenderingContext.texImage2D()
方法接受新的格式。示例调用
js
// imageData = Uint16Array
gl.texImage2D(gl.TEXTURE_2D, 0, ext.R16_EXT, 1, 1, 0, gl.RED, gl.UNSIGNED_SHORT, imageData);
gl.texImage2D(gl.TEXTURE_2D, 0, ext.RG16_EXT, 1, 1, 0, gl.RG, gl.UNSIGNED_SHORT, imageData);
gl.texImage2D(gl.TEXTURE_2D, 0, ext.RGB16_EXT, 1, 1, 0, gl.RGB, gl.UNSIGNED_SHORT, imageData);
gl.texImage2D(gl.TEXTURE_2D, 0, ext.RGBA16_EXT, 1, 1, 0, gl.RGBA, gl.UNSIGNED_SHORT, imageData);
// imageData = Int16Array
gl.texImage2D(gl.TEXTURE_2D, 0, ext.R16_SNORM_EXT, 1, 1, 0, gl.RED, gl.SHORT, imageData);
gl.texImage2D(gl.TEXTURE_2D, 0, ext.RG16_SNORM_EXT, 1, 1, 0, gl.RG, gl.SHORT, imageData);
gl.texImage2D(gl.TEXTURE_2D, 0, ext.RGB16_SNORM_EXT, 1, 1, 0, gl.RGB, gl.SHORT, imageData);
gl.texImage2D(gl.TEXTURE_2D, 0, ext.RGBA16_SNORM_EXT, 1, 1, 0, gl.RGBA, gl.SHORT, imageData);
渲染缓冲区格式
WebGLRenderingContext.renderbufferStorage()
方法接受 ext.R16_EXT
、ext.RG16_EXT
和 ext.RGBA16_EXT
作为内部格式,以这些格式创建渲染缓冲区。示例调用
js
gl.renderbufferStorage(gl.RENDERBUFFER, ext.R16_EXT, 1, 1);
gl.renderbufferStorage(gl.RENDERBUFFER, ext.RG16_EXT, 1, 1);
gl.renderbufferStorage(gl.RENDERBUFFER, ext.RGBA16_EXT, 1, 1);
规范
规范 |
---|
WebGL EXT_texture_norm16 扩展规范 |
浏览器兼容性
BCD 表格仅在浏览器中加载