WebGL 学习(未完待续)

常用方法
- getWebGLContext // 获取 WebGL 绘图上下文
plaintext
1 | const canvas = document.getElementById('webgl'); |
- clearColor // 指定清空 canvas 颜色
plaintext
1 | gl.clearColor(0,0,0,1) |
- clear // 清空
- gl.COLOR_BUFFER_BIT // 颜色缓存区
- gl.DEPTH_BUFFER_BIT // 深度缓冲区
- gl.STENCIL_BUTTFER_BIG // 模版缓存区
plaintext
1 | gl.clear(gl.COLOR_BUFFER_BIT) // 清空颜色缓存区,不是绘图区的canvas,clear 继承自OpenGL,基于基本缓存区模型。 |
- initShaders // 初始化着色器
- VSHEADER_SOURCE // 顶点着色器程序
- FSHEADER_SOURCE // 片元着色器程序,可以理解成像素
plaintext
1 | initShaders(gl, VSHEADER_SOURCE, FSHEADER_SOURCE) |
- drawArrays // 绘制
- mode
- gl.POINT 点
- gl.LINES 线段
- gl.LINE_STRIP 线条
- gl.LINE_LOOP 回路
- gl.TRIANGLES 三角形
- gl.TRIANGLE_STRIP 三角带
- gl.TRIANGLE_FAN 三角扇
- first // 0, 表示从第一个顶点
- count // 1,数量,顶点着色器将被执行 count 次
- mode
plaintext
1 | gl.drawArrays(gl.POINTS, first, count) |
- attribute 变量:包含顶点的数据
- uniform 变量:与顶点无关的数据
- getAttribLocation // 获取 attribute > a_Position 变量的存储位置
- gl.program 包含顶点着色器、片元着色器的着色器程序对象
plaintext
1 | const a_Position = gl.getAttribLocation(gl.program, 'a_Position'); |
- vertexAttrib3f // 将顶点位置传输给 attribute 变量
plaintext
1 | 同族函数 |
- getUniformLocation // 获取 uniform > u_FragColor 变量的存储位置
plaintext
1 | const u_FragColor = gl.getUniformLocation(gl.program, 'u_FragColor); // 颜色 |
- uniform4f 指定颜色
plaintext
1 | 同族函数 |
- 绘制多个点 - 缓冲区对象
plaintext
1 | gl.createBuffer // 创建缓冲区对象 |
- 旋转 90 度
plaintext
1 | const ANGLE = 90; |
- Matrix4 矩阵
···
Matrix4.setIdentity()
Matrix4.setTranslate(x, y, z)
Matrix4.setRotate(angle, x, y, z)
Matrix4.setScale(x, y, z)
Matrix4.translate(x, y, z)
Matrix4.rotate(angle, x, y, z)
Matrix4.scale(x, y, z)
Matrix4.set(m)
Matrix4.elements
前缀 set:将结果写入到 Matrix4 对象中国
无 set:将结果写入自身中
···
requestAnimationFrame
requestAnimation 只有在标签页处于激活状态才生效,requestAnimationFrame 是新引入的方法,还没有实现标准化。google webgl-utils.js 隐藏了浏览器间的差异。createTexture 纹理对象
plaintext
1 | const texture = gl.createTexture() // 创建纹理对象 |
- pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1) // 将纹理图像进行反转
// TODO
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Emooa's Blog!
评论
未找到相关的 Issues 进行评论
请联系 @heiemooa 初始化创建