Texture

gl.creatTexture()

创建 Texture 对象

输入值:无

返回值:返回创建出来的 Texture 对象,为空则创建失败

gl.deleteTexture(texture)

删除 Texture 对象,如果已经被删除则无效果

输入值:

  • texture:待删除的 Texture 对象

返回值:无

gl.pixelStorei(pname, param)

使用 pname 和 param 处理加载的得到的图像

输入值:

  • pname:以下二选一

    gl.UNPACK_FLIP_Y_WEBGL:加载图像后,翻转图像Y轴

    gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL:把RGB分别乘以A

  • param: 指定非0(true)或0(false),必须是整数

gl.activeTexture(texUnit)

激活纹理单元

输入值:

  • texUnit:准备激活的纹理单元(gl.TEXTURE0 - gl.TEXTURE7),不同设备可能会更多

返回值:无

gl.bindTexture(target, texture)

指定纹理对象使用的纹理类型,如果已经有开启了的纹理单元,则绑在对应纹理单元上

输入值:

  • target: gl.TEXTURE_2D 或 gl.TEXTURE&_CUBE_MAP
  • texture: 待绑定的纹理

返回值:无

gl.texParameteri(target, pname, param)

设置纹理参数

输入值

  • target: gl.TEXTURE_2D 或 gl.TEXTURE&_CUBE_MAP

  • pname: 纹理参数

    pname description default value
    gl.TEXTURE_MAG_FLITER 贴图放大采样方法 gl.LINEAR
    gl.TEXTURE_MIN_FLITER 贴图缩小采样方法 gl.NEAREST_MIPMAP_LINEAR
    gl.TEXTURE_WRAP_S 纵向 warp 模式 gl.REPEAT
    gl.TEXTURE_WRAP_TA 横向 warp 模式 gl.REPEAT
  • param: 纹理参数的值

    对于贴图采样方法:

    gl.LINEAR, gl.NEAREST

    gl.NEAREST_MIPMAP_NEAREST, gl.LINEAR_MIPMAP_NEAREST, gl.NEAREST_MIPMAP_LINEAR, gl,LINEAR_MIPMAP_LINEAR

    对于 Wrap 模式:gl.REPEAT, gl.MIRRORED_REPEAT, gl.CLAMP_TO_EDGE

gl.texImage2D(target, level, internalformat, format, type, image)

将 image 指定的图像分配给绑定到目标上的纹理对象

输入值:

  • target:gl.TEXTURE_2D 或 gl.TEXTURE&_CUBE_MAP

  • level:MipMap 层数,一般都传入0

  • internalformat:图片的内部格式

    Format 纹素
    gl.RGB (R, G, B, 1)
    gl.RGBA (R, G, B, A)
    gl.ALPHA (0, 0, 0, A)
    gl.LUMINANCE (L, L, L, 1)
    gl.LUMINANCE_ALPHA
  • format: 纹素的格式,必须与 internalformat 相同

  • type:纹素的数据类型

    Type 介绍
    gl.UNSIGNED_BYTE 无符号字节,每个元素有1字节
    gl.UNSIGNED_SHORT_5_6_5 RGB 分别有5, 6, 5字节
    gl.UNSIGNED_SHORT_4_4_4_4 RGBA 每个4字节
    gl.UNSIGNED_SHORT_5_5_5_1 RGB 每个5字节,A 1字节
  • image:图像

返回值:无

gl.uniform1i(uniformLoc, texUnitIndex)

将纹理单元分配给uniform变量

输入值:

  • uniformLoc:变量位置
  • texUnitIndex:纹理单元编号

返回值:无

Framebuffer

gl.createFramebuffer()

创建一个framebuffer

返回值:farmebuffer对象

gl.deleteFramebuffer(framebuffer)

删除framebuffer

gl.bindFramebuffer(target, framebuffer)

将framebuffer绑定在target上,如果framebuffer是null,则解绑

输入值:

  • target:必须是gl.FRAMEBUFFER
  • framebuffer:要绑定的framebuffer

返回值:无

gl.framebufferTexture2D(target, attachment, textarget, tex, level)

把贴图texture绑定到target上

输入值:

  • target:必须是gl.FRAMEBUFFER

  • attachment:绑定到哪里

    gl.COLOR_ATTACHMENT0:绑定为颜色缓冲

    gl.DEPTH_ATTACHMENT:绑定为深度缓冲

  • textarget:贴图类型(gl.TEXTURE_2D, gl.CUBE_MAP_TEXTURE)

  • tex:贴图

  • level:MIPMAP层级

返回值:无

gl.framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer)

把renderbuffer绑定到target上

输入值:

  • target:必须是gl.FRAMEBUFFER

  • attachment:绑定到哪里

    gl.COLOR_ATTACHMENT0:绑定为颜色缓冲

    gl.DEPTH_ATTACHMENT:绑定为深度缓冲

    gl.STENCIL_ATTACHMENT:绑定为模板缓冲

  • renderbuffertarget:必须是gl.RENDERBUFFER

  • renderbuffer:renderbuffer对象

输出值:无

gl.checkFramebufferStatus(target)

检查framebuffer的完整性

输入值:target:必须是gl.FRAMEBUFFER

返回值:

  • 0:target不是gl.FRAMEBUFFER
  • gl.FRAMEBUFFER_COMPLETE:framebuffer完整
  • gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:framebuffer的某一关联对象为空
  • gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:framebuffer关联对象尺寸不一致
  • gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:framebuffer尚未关联任何一个对象

Renderbuffer

gl.createRenderbuffer()

创建一个renderbuffer

返回值:renderbuffer对象

gl.deleteRenderbuffer(renderbuffer)

删除renderbuffer

gl.bindRenderbuffer(target, renderbuffer)

将renderbuffer绑定在target上,如果renderbuffer是null,则解绑

输入值:

  • target:必须是gl.RENDERBUFFER
  • renderbuffer:要绑定的renderbuffer

返回值:无

gl.renderbufferStorage(target, internalFormat, width, height)

创建对应类型的renderbuffer并初始化

输入值:

  • target:必须是gl.RENDERBUFFER

  • internalFormat:格式

    gl.DEPTH_COMPONENT16:深度缓冲

    gl.STENCIL_INDEX8:模板缓冲

    gl.RGBA4:颜色缓冲

    gl.RGB5_A1

    gl.RGB565

  • width,height:大小

返回值:无

Other

gl.enable(cap)

开始cap功能

输入值:

返回值:无

gl.disable(cap)

同上

gl.blendFunc(srcFactor, dstFactor)

设置混合模式

输入值:

  • srcFactor和dstFactor

    gl.ZERO gl.ONE

    gl.SRC_COLOR gl.ONE_MINUS_SRC_COLOR gl.DST_COLOR gl.ONE_MINUS_DST_COLOR

    gl.SRC_ALPHA gl.ONE_MINUS_SRC_ALPHA gl.DST_ALPHA gl.ONE_MINUS_DST_ALPHA

    gl.SRC_ALPHA_SATURATE

返回值:无

gl.depthMask(mask)

是否开启深度写入

输入值:

  • mask:true或者false

返回值:无

gl.viewport(x, y, width, height)

设置绘制区域

输入值:

  • x,y:左下角位置
  • width,height:大小