【发布时间】:2015-09-15 00:42:41
【问题描述】:
我有两个“std::vector”,一个用于索引,一个用于顶点,我用 std::vector.push_back() 填充它们。然后我做
glGenBuffers(1, &verticesbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, verticesbuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, /*EDITED-->*/vertices.size() * sizeof(vertices[0])/*<--EDITED*/, &vertices[0], GL_STATIC_DRAW);
为每个创建缓冲区,然后尝试用
绘制多边形glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBindBuffer(GL_ARRAY_BUFFER, verticesbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indicesbuffer);
glDrawElements(
GL_TRIANGLES,
indices.size(),
GL_UNSIGNED_INT,
&indices[0]
);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
当我运行程序时,什么也没有出现。我可以使用 glBegin() / glEnd() 方法让它工作,但索引的 vbo 不起作用(glGetError() 也没有给出任何错误)。我什至不知道这是否接近正确,因为我搜索了无数教程和其他 stackoverflow 问题并尝试了许多不同的方法来修复它。我还应该提到我打过电话
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glOrtho(0.0f, windowX, windowY, 0.0f, 0.0f, 1000.0f);
在程序开始时,我也不知道这是否正确(如您所见,我对这方面很陌生)。
【问题讨论】:
-
您确定没有 glEnable 或 glEnableClientState 丢失吗?
-
我修复了答案指出的错误,但我仍然没有看到任何东西。我错过了 glEnable 或 glEnableClientState 吗?我在问题中发布的 OpenGL 方法调用是我所做的唯一与绘图相关的调用
-
现在这个问题的问题是你没有提供MCVE。我们已经解决了使用您提供的代码的明显问题原因。如果您想继续获得帮助,您应该发布一个包含 MCVE 的新问题。
-
@ArcaneEnforcer:您实际上似乎从未将属性指针设置为指向您的 VBO。