webgl笔记
Published:
·
LastMod: August 01, 2024
·
917 words
webgl 笔记 🔗
概念 🔗
图形装配过程 🔗
将孤立的顶点坐标装配成几何图形。几何图形由gl.drawArrays()
函数的第一个参数觉得
光栅化 🔗
几何图形转化为片元
片元 🔗
图形最终在屏幕上覆盖的像素数
光栅化的过程片元都是有坐标信息的,可以通过gl_FragCoord
拿到
坐标系 🔗
中心点(0,0,0)
左下角 (-1,-1,0)
右上(1,1,0)
createShader 🔗
gl.VERTEX_SHADER
顶点着色器gl.FRAGMENT_SHADER
片段着色器
|
|
createProgram 🔗
|
|
program生成后要被使用
gl.useProgram(program);
vertexAttribPointer 🔗
1
gl.vertexAttribPointer(index, size, type, normalized, stride, offset)
- index 变量属性
- size 每个顶点属性的组成数量, 即数据中几个数成一组
- type 类型
- normalized 是否归一化处理
- stride 以字节为单位的偏移量
- offset 顶点属性数组中第一部分的字节偏移量
attribute 🔗
attribute 声明变量 (储存限定符)
attribute 类型 变量名
API Methods 🔗
方法名 | 说明 |
---|---|
gl.clearColor(0.0, 0.0, 0.0, 1.0) | 清空canvas颜色 |
gl.clear(gl.COLOR_BUFFER_BIT) | 清空canvas |
gl.createShader(type) | 创建着色器 |
gl.shaderSource(shader, fragment); | 设置着色器代码 |
gl.compileShader(shader); | 编译一个 GLSL 着色器,使其成为为二进制数据 |
gl.createProgram() | 创建和初始化一个 WebGLProgram 对象 |
gl.attachShader(program, shader) | 添加一个片段或者顶点着色器。 |
gl.linkProgram(program); | 链接 |
gl.createBuffer() | 创建buffer数据缓冲区 |
gl.bindBuffer(gl.ARRAY_BUFFER, buffer); | 创建并初始化了 Buffer 对象的数据存储区 |
gl.getAttribLocation(program, name) | 某属性的下标指向位置 |
gl.getUniformLocation(program, name) | 返回指定uniform变量的指向 |
gl.useProgram(program) | 使用程序 |
gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(positions), gl.STATIC_DRAW) | 绑定buffer对应的数据 |
gl.enableVertexAttribArray(index) | 激活的顶点索引,由getAttribLocation() 返回 |
gl.vertexAttribPointer(index, size, type, normalized, stride, offset); | 告诉显卡从当前绑定的缓冲区(bindBuffer() 指定的缓冲区)中读取顶点数据。 |
gl.drawArrays(mode, first, count); | 从向量数组中绘制图元。 |
|
|