【OpenGL】绘制三角形

绘制三个点

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

绘制三角形

猜你喜欢

转载自blog.csdn.net/xingxinmanong/article/details/77318831