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 扩展规范 |
浏览器兼容性
加载中…