WebGL 纹理
WebGLTexture 对象自身未定义任何方法或属性,其内容也无法直接访问。使用 WebGLTexture 对象时,WebGLRenderingContext 的下列方法很有用:
WebGLRenderingContext.bindTexture()WebGLRenderingContext.createTexture()WebGLRenderingContext.deleteTexture()WebGLRenderingContext.isTexture()
另请参阅 WebGL 教程中的在 WebGL 中使用纹理。
WebXR 不透明纹理
使用 WebXR 图层时,XRWebGLBinding 对象会为颜色附件和深度/模板附件返回不透明的 WebGLTexture 实例。
返回不透明 WebGLTexture 对象的 WebXR 方法:
WebXR 不透明纹理与标准 WebGLTexture 相同,但有以下例外:
- 在其会话的 WebXR
requestAnimationFrame()回调之外,WebXR 不透明纹理无效。 - 在由
XRWebGLBinding.getSubImage()或XRWebGLBinding.getViewSubImage()返回之前,WebXR 不透明纹理无效。 - 用于颜色附件的 WebXR 不透明纹理包含预乘 alpha 的颜色。
- 在
requestAnimationFrame()回调结束时,WebXR 不透明纹理会被解除绑定,并与所有WebGLShader对象分离。 - 即使使用 WebGL 1.0 上下文,WebXR 不透明纹理的行为也如同使用
texStorage2D或texStorage3D(视情况而定)分配。 - 若对 WebXR 不透明纹理调用
WebGLRenderingContext.deleteTexture(),将抛出INVALID_OPERATION错误。 - 不允许更改 WebXR 不透明纹理的尺寸或格式。GL 函数只能修改纹素(texel)值和纹理参数。
示例
>创建纹理
js
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const texture = gl.createTexture();
规范
| 规范 |
|---|
| WebGL Specification> # 5.9> |
浏览器兼容性
参见
WebGLRenderingContext.bindTexture()WebGLRenderingContext.createTexture()WebGLRenderingContext.deleteTexture()WebGLRenderingContext.isTexture()WebGLRenderingContext.compressedTexImage2D()WebGLRenderingContext.compressedTexSubImage2D()WebGLRenderingContext.copyTexImage2D()WebGLRenderingContext.copyTexSubImage2D()WebGLRenderingContext.generateMipmap()WebGLRenderingContext.getTexParameter()WebGLRenderingContext.texImage2D()WebGLRenderingContext.texSubImage2D()WebGLRenderingContext.texParameterf()WebGLRenderingContext.texParameteri()