什么是Shaders?
简单的说,shader就是一段GLSL小程序,它运行在GPU上而不是CPU上。
它使用opengl shading language语言编写。
C++与shader比较图:
Vertex Shaders [顶点着色器]
vertex shader主要用来将点(x,y,z坐标)变换成不同的点。
Fragment Shaders[片段着色器]
fragment shader主要功能是计算每一个需要绘制的像素点的颜色。
什么是VBO和VAO?
VBO和VAO用来将C++程序的数据传给shaders来渲染。
Vertex Buffer Objects(VBOs)
VBO其实就是显存的"缓冲区buffers" 一串包含各种二进制数据的字节区域。
VBO不关心这些数据是啥,因为它只是对内存进行复制。
Vertex Array Objects(VAOs)
VAO对VBO和shader变量进行连接。它描述了VBO所包含的数据类型,还有该传递
数据给哪个shader变量。
着色器变量Uniform与Attribute
着色器变量有两种类型:uniform和attribute。
attribute变量可以在每个顶点上有不同值。
uniform变量在多个顶点上保持相同值。
【注意:uniforms能被任意着色器访问,但是attributes必须先进入顶点着色器,而非
片段着色器。顶点着色器在需要时会将该值传给片段着色器。】
贴图
就是你应用在3D物体上的2D图像。
贴图的高和宽需要是2的幂次方。
贴图坐标不是以像素为单位。它们范围是从0到1。(0,0)是左下角,(1,1)是右上角。