WebGLRenderingContext: framebufferTexture2D() 方法
WebGLRenderingContext.framebufferTexture2D()
方法是 WebGL API 的一部分,用于将纹理附加到 WebGLFramebuffer
。
语法
js
framebufferTexture2D(target, attachment, textarget, texture, level)
参数
target
-
指定绑定点(目标)的
GLenum
。可能的值gl.FRAMEBUFFER
-
用于渲染图像的颜色、alpha、深度和模板缓冲区的集合缓冲区数据存储。
当使用 WebGL 2 上下文 时,以下值也可用
gl.DRAW_FRAMEBUFFER
-
用作绘制、渲染、清除和写入操作的目标。
gl.READ_FRAMEBUFFER
-
用作读取操作的源。
绑定时,
gl.FRAMEBUFFER
会同时设置gl.DRAW_FRAMEBUFFER
和gl.READ_FRAMEBUFFER
绑定点。引用时,gl.FRAMEBUFFER
指的是gl.DRAW_FRAMEBUFFER
绑定。 attachment
-
指定
texture
的附加点的GLenum
。可能的值-
gl.COLOR_ATTACHMENT0
:将纹理附加到帧缓冲区的颜色缓冲区。 -
gl.DEPTH_ATTACHMENT
:将纹理附加到帧缓冲区的深度缓冲区。 -
gl.STENCIL_ATTACHMENT
:将纹理附加到帧缓冲区的模板缓冲区。
当使用 WebGL 2 上下文 时,以下值也可用
gl.DEPTH_STENCIL_ATTACHMENT
:深度和模板缓冲区。gl.COLOR_ATTACHMENT1 gl.COLOR_ATTACHMENT2 gl.COLOR_ATTACHMENT3 gl.COLOR_ATTACHMENT4 gl.COLOR_ATTACHMENT5 gl.COLOR_ATTACHMENT6 gl.COLOR_ATTACHMENT7 gl.COLOR_ATTACHMENT8 gl.COLOR_ATTACHMENT9 gl.COLOR_ATTACHMENT10 gl.COLOR_ATTACHMENT11 gl.COLOR_ATTACHMENT12 gl.COLOR_ATTACHMENT13 gl.COLOR_ATTACHMENT14 gl.COLOR_ATTACHMENT15
当使用
WEBGL_draw_buffers
扩展时-
ext.COLOR_ATTACHMENT0_WEBGL
(与gl.COLOR_ATTACHMENT0
相同) ext.COLOR_ATTACHMENT1_WEBGL ext.COLOR_ATTACHMENT2_WEBGL ext.COLOR_ATTACHMENT3_WEBGL ext.COLOR_ATTACHMENT4_WEBGL ext.COLOR_ATTACHMENT5_WEBGL ext.COLOR_ATTACHMENT6_WEBGL ext.COLOR_ATTACHMENT7_WEBGL ext.COLOR_ATTACHMENT8_WEBGL ext.COLOR_ATTACHMENT9_WEBGL ext.COLOR_ATTACHMENT10_WEBGL ext.COLOR_ATTACHMENT11_WEBGL ext.COLOR_ATTACHMENT12_WEBGL ext.COLOR_ATTACHMENT13_WEBGL ext.COLOR_ATTACHMENT14_WEBGL ext.COLOR_ATTACHMENT15_WEBGL
当使用
WEBGL_depth_texture
扩展时gl.DEPTH_STENCIL_ATTACHMENT
:深度和模板缓冲区数据存储。
-
textarget
-
指定纹理目标的
GLenum
。可能的值gl.TEXTURE_2D
:二维图像。-
gl.TEXTURE_CUBE_MAP_POSITIVE_X
:立方体的正 X 面图像。 -
gl.TEXTURE_CUBE_MAP_NEGATIVE_X
:立方体的负 X 面图像。 -
gl.TEXTURE_CUBE_MAP_POSITIVE_Y
:立方体的正 Y 面图像。 -
gl.TEXTURE_CUBE_MAP_NEGATIVE_Y
:立方体的负 Y 面图像。 -
gl.TEXTURE_CUBE_MAP_POSITIVE_Z
:立方体的正 Z 面图像。 -
gl.TEXTURE_CUBE_MAP_NEGATIVE_Z
:立方体的负 Z 面图像。
texture
-
一个
WebGLTexture
对象,其图像将被附加。 level
-
指定要附加的纹理图像的 mipmap 级别
GLint
。必须为 0。
返回值
无 (undefined
)。
异常
- 如果以下情况发生,则会抛出
gl.INVALID_ENUM
错误:target
不是gl.FRAMEBUFFER
。attachment
不是接受的附加点之一。textarget
不是接受的纹理目标之一。
- 如果
level
不是 0,则会抛出gl.INVALID_VALUE
错误。 - 如果
texture
不是 0 或现有纹理对象的名称,则会抛出gl.INVALID_OPERATION
错误。
示例
js
gl.framebufferTexture2D(
gl.FRAMEBUFFER,
gl.COLOR_ATTACHMENT0,
gl.TEXTURE_2D,
texture,
0,
);
规范
规范 |
---|
WebGL 规范 # 5.14.6 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。