【OpenGL】绘制三角形

来源:互联网 发布:anaconda python教程 编辑:程序博客网 时间:2024/05/18 01:28

绘制三个点

上一节我们已经成功绘制出了一个点,那如何绘制三个点呢?很简单,给 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);

绘制三角形