1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
|
// 从颜色缓冲区中读取 x y width height 参数确定的矩形块中的所有像素值 并保存在pixels指定的数组中 // @param x y 选择矩形区域左上角坐标 // @param width height 选择矩形区域的宽 长 // @param format 指定像素值的颜色格式 必须为 gl.RGB // @param type 指定像素值得数据格式 必须是 gl.UNSIGNED_BYTE // @param pixels 类型化数组 Unit8Array void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
// 透明混合参数 // blendFunc 的 sfactor dfactor 参数 const GLenum ZERO = 0; const GLenum ONE = 1; const GLenum SRC_COLOR = 0x0300; const GLenum ONE_MINUS_SRC_COLOR = 0x0301; const GLenum SRC_ALPHA = 0x0302; const GLenum ONE_MINUS_SRC_ALPHA = 0x0303; const GLenum DST_ALPHA = 0x0304; const GLenum ONE_MINUS_DST_ALPHA = 0x0305; // blendFunc 的 sfactor 参数 const GLenum DST_COLOR = 0x0306; const GLenum ONE_MINUS_DST_COLOR = 0x0307; const GLenum SRC_ALPHA_SATURATE = 0x0308;
// 通过参数 sfactor 和 dfactor 指定进行混合操作的函数 混合后的颜色如下计算 // 混合后颜色 = 源颜色 * sfactor + 目标颜色 * dfactor // @param sfactor 见此方法上枚举 // @param dfactor 见此方法上枚举 void blendFunc(GLenum sfactor, GLenum dfactor); // 同上 只是分开设置RGB 和 ALPHA void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
// 创建帧缓冲区对象 WebGLFramebuffer? createFramebuffer(); // 删除帧缓冲区对象 void deleteFramebuffer(WebGLFramebuffer? framebuffer); // 创建渲染缓冲区对象 WebGLRenderbuffer? createRenderbuffer(); // 删除渲染缓冲区对象 void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
const GLenum RENDERBUFFER = 0x8D41;
// 将 renderbuffer 指定的渲染缓冲区对象绑定在target目标上 // 如果 renderbuffer 为 null 则将已经绑定在target目标上的渲染缓冲区对象解除绑定 // @param target 必须是 gl.RENDERBUFFER void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
// 表示渲染缓冲区将替代颜色缓冲区 const GLenum RGBA4 = 0x8056; const GLenum RGB5_A1 = 0x8057; const GLenum RGB565 = 0x8D62; // 表示渲染缓冲区将替代深度缓冲区 const GLenum DEPTH_COMPONENT16 = 0x81A5; // 表示渲染缓冲区将替代模板缓冲区 const GLenum STENCIL_INDEX8 = 0x8D48;
// 创建并初始化渲染缓冲区的数据区 // @param target 必须是 gl.RENDERBUFFER // @param internalformat 指定渲染缓冲区中的数据格式 见方法上枚举 // @param width height 指定渲染缓冲区的宽度和高度 单位像素 void renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
// 绑定帧缓冲区 // FBO就是由颜色附件(COLOR_ATTACHMENT0),深度附件(DEPTH_ATTACHMENT),模板附件(STENCIL_ATTACHMENT)组成的一个逻辑存储对象 // RBO是一个2D图像缓冲区,可以用于分配和存储颜色值,深度或者模板值,可以作为FBO的颜色,深度模板附件。 void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
// attachment const GLenum COLOR_ATTACHMENT0 = 0x8CE0; const GLenum DEPTH_ATTACHMENT = 0x8D00; const GLenum STENCIL_ATTACHMENT = 0x8D20; const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A;
// 设置纹理为 attachment 附件 void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture? texture, GLint level); // 设置渲染缓冲区对象为 attachment 附件 void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer? renderbuffer); // 检查帧缓冲区 [WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target); // 设置视口宽度 void viewport(GLint x, GLint y, GLsizei width, GLsizei height);
// 锁定或者释放深度缓冲区的写入操作 // @param flag false 只读 true 可读写 void depthMask(GLboolean flag);
// 返回类似下列上下文参数 // { // alpha: true, // antialias: true, // depth: true, // failIfMajorPerformanceCaveat: false, // premultipliedAlpha: true, // preserveDrawingBuffer: false, // stencil: false // } // 可以通过下列方法设置 // canvas.getContext('webgl', { antialias: false, depth: false }); [WebGLHandlesContextLoss] WebGLContextAttributes? getContextAttributes(); // 标记上下文是否已经丢失 [WebGLHandlesContextLoss] boolean isContextLost();
// 设置源和目标混合因子 值范围 在0到1之间 void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
// blendEquation 的 mode 参数 const GLenum FUNC_ADD = 0x8006; const GLenum FUNC_SUBTRACT = 0x800A; const GLenum FUNC_REVERSE_SUBTRACT = 0x800B;
// 将RGB混合方程和阿尔法混合方程设置为单个方程。 // 混合方程式确定新像素如何与 WebGLFramebuffer 中的像素组合 // @ext EXT_blend_minmax void blendEquation(GLenum mode); // 同上 只是分开设置RGB 和 ALPHA // @ext EXT_blend_minmax void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
// 设置在绘制或渲染WebGLFramebuffer时要开启或关闭的颜色分量。 void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
// 指定一个为压缩格式的2D纹理图片。 void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, [AllowShared] ArrayBufferView data);
// 指定一个为压缩格式的2D纹理子图片。 void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, [AllowShared] ArrayBufferView data);
// 复制2D纹理图片。 void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
// 复制2D纹理子图片。 void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
// cullFace 的 mode 参数 const GLenum FRONT = 0x0404; const GLenum BACK = 0x0405; const GLenum FRONT_AND_BACK = 0x0408;
// 设置多边形的正面或反面是否要被排除。 // gl.enable(gl.CULL_FACE); // gl.cullFace(gl.FRONT_AND_BACK); // gl.getParameter(gl.CULL_FACE_MODE) === gl.FRONT_AND_BACK; void cullFace(GLenum mode);
// depthFunc 的 func 参数 const GLenum NEVER = 0x0200; const GLenum LESS = 0x0201; const GLenum EQUAL = 0x0202; const GLenum LEQUAL = 0x0203; const GLenum GREATER = 0x0204; const GLenum NOTEQUAL = 0x0205; const GLenum GEQUAL = 0x0206; const GLenum ALWAYS = 0x0207;
// 设置比较输入像素深度和深度缓存值得函数 // gl.enable(gl.DEPTH_TEST); // gl.depthFunc(gl.NEVER); // gl.getParameter(gl.DEPTH_FUNC) === gl.NEVER; void depthFunc(GLenum func);
// 设置从规范化设备坐标映射到窗口或视口坐标时的深度范围。 void depthRange(GLclampf zNear, GLclampf zFar);
// 阻断执行,直到之前所有的操作都完成。 void finish();
// 清空缓冲的命令,这会导致所有命令尽快执行完。 void flush();
// 设置多边形的正面使用顺时针还是逆时针绘制表示。 void frontFace(GLenum mode);
// 为 WebGLTexture 对象生成一组mip纹理映射。 void generateMipmap(GLenum target);
// 返回激活状态的attribute变量信息。 WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index); // 返回激活状态的uniform 变量信息。 WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index); // 返回附加在 WebGLProgram 上的 WebGLShader 对象的列表 sequence<WebGLShader>? getAttachedShaders(WebGLProgram program);
// 返回缓冲信息。 any getBufferParameter(GLenum target, GLenum pname);
// 返回错误信息。 [WebGLHandlesContextLoss] GLenum getError();
// 返回帧缓冲区的信息。 any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname);
// 返回渲染缓冲区的信息。 any getRenderbufferParameter(GLenum target, GLenum pname);
// 返回一个描述着色器数字类型精度的WebGLShaderPrecisionFormat 对象。 WebGLShaderPrecisionFormat? getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype);
// 以字符串形式返回 WebGLShader 的源码。 DOMString? getShaderSource(WebGLShader shader);
// 返回指定位置的uniform 变量。 any getUniform(WebGLProgram program, WebGLUniformLocation location);
// 返回指定位置的顶点attribute变量。 any getVertexAttrib(GLuint index, GLenum pname);
// 获取给定索引的顶点attribute位置。 [WebGLHandlesContextLoss] GLintptr getVertexAttribOffset(GLuint index, GLenum pname);
// 给某些行为设置建议使用的模式。具体建议需要看执行的情况。 void hint(GLenum target, GLenum mode); // 返回给入的缓冲是否有效。 [WebGLHandlesContextLoss] GLboolean isBuffer(WebGLBuffer? buffer); // 测试这个上下文的WebGL功能是否开启。 [WebGLHandlesContextLoss] GLboolean isEnabled(GLenum cap); // 返回 Boolean 值,表示给入的 WebGLFrameBuffer 对象是否有效。 [WebGLHandlesContextLoss] GLboolean isFramebuffer(WebGLFramebuffer? framebuffer); // 返回一个 Boolean 值,表示给入的 WebGLProgram 是否有效。 [WebGLHandlesContextLoss] GLboolean isProgram(WebGLProgram? program); [WebGLHandlesContextLoss] GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer); [WebGLHandlesContextLoss] GLboolean isShader(WebGLShader? shader); [WebGLHandlesContextLoss] GLboolean isTexture(WebGLTexture? texture); // 设置线宽。无效 void lineWidth(GLfloat width);
// 为抗锯齿效果设置多重取样覆盖参数。 void sampleCoverage(GLclampf value, GLboolean invert); // 设置裁剪框。 void scissor(GLint x, GLint y, GLsizei width, GLsizei height);
// 同时设置前面和背面的模板测试函数,及其引用值。 void stencilFunc(GLenum func, GLint ref, GLuint mask); // 可分开设置前面或背面的模板测试函数,及其引用值。 void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); // 同时启用或禁用,前面和背面的模板测试掩码。 void stencilMask(GLuint mask); // 可分开启用或禁用,前面和背面的模板测试掩码。 void stencilMaskSeparate(GLenum face, GLuint mask); // 同时设置,在前面和背面的模板缓冲区上执行的操作。 void stencilOp(GLenum fail, GLenum zfail, GLenum zpass); // 可分开设置,在前面和背面的模板缓冲区上执行的操作。 void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
// 更新当前 WebGLTexture 的子矩形。 void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLenum format, GLenum type, TexImageSource source); // May throw DOMException
|