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 扩展规范

浏览器兼容性

另见