为什么glVertexAttribDivisor会崩溃?

时间:2014-05-04 04:21:46

标签: opengl graphics 3d glsl vertex

我试图用实例渲染一些树。这很奇怪,但在昨天晚上睡觉之前,我检查了代码,并且它处于运行状态,当我今天早上起床时,它在我打电话时崩溃glVertexAttribDivisor我没有更改任何代码从昨天开始。

以下是我将数据发送到GPU进行实例化的方法。

glGenBuffers(1, &iVBO);
glBindBuffer(GL_ARRAY_BUFFER, iVBO);
glBufferData(GL_ARRAY_BUFFER, (ml_instance->i_positions.size()*sizeof(glm::vec4)) , NULL, GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, (ml_instance->i_positions.size()*sizeof(glm::vec4)), &ml_instance->i_positions[0]);

然后在顶点规范中 -

glBindBuffer(GL_ARRAY_BUFFER, iVBO);
glVertexAttribPointer(i_positions, 4, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(i_positions);
glVertexAttribDivisor(i_positions,1); // **THIS IS WHERE THE PROGRAM CRASHES**

glDrawElementsInstanced(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0,TREES_INSTANCE_COUNT);

我检查了ml_instance->i_positions,它包含了需要渲染的所有数据。

我在顶点着色器中检查了i_positions的值,它与我在那里定义的内容相同。

我这里的想法很少,一切看起来都很好。我错过了什么?

0 个答案:

没有答案