三角形的绘制
-
编写顶点着色器和片段着色器代码
输入和输出:基于OpenGL的渲染流程,从而每个着色器都有输入和输出,这样才能进行数据交流和传递。GLSL定义了in和out关键字专门来达成这个目的。只要一个输出变量与下一个着色器阶段的输入匹配,它就会传递下去。
Uniform关键字:Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。
- uniform是全局的(Global)
- 无论你把uniform值设置成什么,uniform会一直保存它们的数据,直到它们被重置或更新
//顶点着色器
//声明OpenGL es版本
#version 300 es
//in 代表输入属性
//顶点坐标属性
layout(location = 0) in vec3 aPos;
//颜色属性
layout(location = 1) in vec3 aColor;
//out 代表传递给片段着色器的属性
out vec3 color;
void main(){
//gl_Position是内置的属性
gl_Position= vec4(aPos.x,aPos.y,aPos.z,1.0f);
color= aColor;
}
//片段着色器
#version 300 es
//定义浮点精度
precision mediump float;
//颜色采样输出
out vec4 fragColor;
//链接顶点着色器的同名输出
in vec3 color;
void main(){
fragColor=vec4(color,1.0f);
}
-
编写渲染类,实现GLSurfaceVi