EXT_texture_norm16 扩展

EXT_texture_norm16 扩展是 WebGL API 的一部分,提供了一组新的 16 位有符号归一化和无符号归一化格式(定点纹理、渲染缓冲区和纹理缓冲区)。

启用此扩展时

可以使用 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_EXText.RG16_EXText.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 表格仅在浏览器中加载

另请参阅