索引缓冲对象
想要绘制一个矩形时,可以考虑的思路是绘制两个三角形拼接在一起,而这样就需要绘制6个顶点,对比矩形本身的4个顶点有很大的额外开销,索引缓冲对象EBO可以存储顶点的索引,而在绘制时调用矩形四个顶点的索引并按照顺序绘制。
实现这个功能需要我们定义索引:
与VBO类似,我们先绑定EBO然后用glBufferData把索引复制到缓冲里。同样,和VBO类似,我们会把这些函数调用放在绑定和解绑函数调用之间,与其对应的缓冲目标为GL_ELEMENT_ARRAY_BUFFER,使用glBindBuffer、glBufferData时将其作为对象,并且使用
glDrawElements方法绘制。
过程如下:
此外,使用glPolygonMode(GL_FRONT_AND_BACK, GL_LINE) 表示对三角形的正面与背面均用线绘制,即生成线框,直到我们用glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
将其设置回默认模式。
创建两个不同三角形,使用不同VAO与VBO
类似的过程重复两遍,更改命名
使用不同shader分别绘制两个三角形
过程是类似的,编写新的fragmentshader GLSL程序,完成编译后,创建两个shaderprogram将vertexshader分别于两个fragmentshader绑定形成两个shaderprogram,在绘制时分别调用。注意区分命名。