使用向量的向量在OpenGL中绘制地面

use vector of vectors to draw a ground in opengl

本文关键字:向量 绘制 OpenGL      更新时间:2023-10-16

>我将向量初始化为:

vector<vector<GLfloat> > ground_vertices {
{-10, -0.1, 50},
{10, -0.1, 50},
{-10, -0.1, -300},
{10, -0.1, -300} };

我的绘图功能是这样的

void Ground() {
glBegin(GL_QUADS);                
for (int i=0; i < 4; i++)
{
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(ground_vertices[i]);
}
glEnd();

}

但我不断得到

ground.cpp|37 col 40 error| 无法将value_type__alloc_traits>__gnu_cxx参数 '1' 的 'GLfloat {aka float}' 转换为 'void glVertex3f(GLfloat, GLfloat, GLfloat, GLfloat)'

我想知道如何解决它。谢谢!

使用函数glVertex3fv(const GLfloat * v)并将指向顶点数据的指针传递给它。

您可以通过std::vector::data以下方法获取指向std::vector中包含的数据的指针:

glVertex3fv(ground_vertices[i].data());


请注意,使用glVertex3f(GLfloat x, GLfloat y, GLfloat z)的正确编码是:

glVertex3f(
ground_vertices[i][0],
ground_vertices[i][1],
ground_vertices[i][2]);