【发布时间】:2018-05-23 12:29:35
【问题描述】:
我将向量初始化为:
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 错误|无法将“__gnu_cxx::__alloc_traits > ::value_type {aka std::vector}”转换为“GLfloat {aka float}”,以将参数“1”转换为“void glVertex3f(GLfloat, GLfloat, GLfloat)”
我想知道我该如何解决它。谢谢!
【问题讨论】:
-
在 begin-end 块中使用 for 循环从来没有是一个好主意。这段代码不仅在十年前就被弃用了,而且在现代 OpenGL 中完全不起作用,而且自 20 年 以来它也完全被顶点数组所取代。
-
@derhass 你好!谢谢你的意见。那你建议用什么?
-
Vertex Buffer Objects 最好是现代 OpenGL 的教程,例如 paroj.github.io/gltut/ 或 open.gl。