【OpenGL】绘制三角形
程序员文章站
2022-04-01 12:18:06
...
绘制三个点
上一节我们已经成功绘制出了一个点,那如何绘制三个点呢?很简单,给 VBO 填充数据时填充三个点的数据
void init()
{
GLuint VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
M3DVector3f vertices[3];
vertices[0][0] = 0.3f;
vertices[0][1] = 0.4f;
vertices[0][2] = 0.0f;
vertices[1][0] = -0.3f;
vertices[1][1] = 0.4f;
vertices[1][2] = 0.0f;
vertices[2][0] = 0.0f;
vertices[2][1] = 0.0f;
vertices[2][2] = 0.0f;
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
}
然后还要修改绘制函数的参数
void renderPerFrame()
{
glClear(GL_COLOR_BUFFER_BIT);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_POINTS, 0, 3);
glDisableVertexAttribArray(0);
glutSwapBuffers();
}
glDrawArrays 的第一个参数指定要绘制的图形类型,第二个参数指定从第几个数据开始,第三个参数指定数据长度。这里要绘制三个点,所以指定数据长度为 3 即可。
绘制三角形
我们已经成功绘制出了三个点,那绘制一个三角形就很简单了,只需要修改绘制函数的第一个参数,即绘制图片的类型为 triangle
glDrawArrays(GL_TRIANGLES, 0, 3);