gpt4 book ai didi

c++ - 具有显式数组与非显式数组的 glBufferData

转载 作者:行者123 更新时间:2023-11-28 07:27:32 26 4
gpt4 key购买 nike

我正在使用明确定义的顶点坐标数组创建 glBufferData,一切正常。使用未明确定义的数组时,结果完全不同,尽管我使用的是相同的坐标值。绘制调用以不同的顶点顺序渲染事物。

顶点是三角形网格。

代码 1 运行良好:

this->graphics->createBuffers(1, vboIndexsID);
this->graphics->bindBuffer(GL_ELEMENT_ARRAY_BUFFER, *vboIndexsID);
this->graphics->bufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLushort)*numIndexs, ind, GL_STATIC_DRAW);

this->graphics->createBuffers(1, vboVertexsID);
this->graphics->bindBuffer(GL_ARRAY_BUFFER, *vboVertexsID);

this->graphics->bufferData(GL_ARRAY_BUFFER, 300, quad_verts2, GL_STATIC_DRAW);

其中 quad_verts2 是:

GLfloat quad_verts2[75] =
{
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 100.0f,
0.0f, 0.0f, 200.0f,
0.0f, 0.0f, 300.0f,
0.0f, 0.0f, 400.0f,
100.0f, 0.0f, 0.0f,
100.0f, 0.0f, 100.0f,
100.0f, 0.0f, 200.0f,
100.0f, 0.0f, 300.0f,
100.0f, 0.0f, 400.0f,
200.0f, 0.0f, 0.0f,
200.0f, 0.0f, 100.0f,
200.0f, 0.0f, 200.0f,
200.0f, 0.0f, 300.0f,
200.0f, 0.0f, 400.0f,
300.0f, 0.0f, 0.0f,
300.0f, 0.0f, 100.0f,
300.0f, 0.0f, 200.0f,
300.0f, 0.0f, 300.0f,
300.0f, 0.0f, 400.0f,
400.0f, 0.0f, 0.0f,
400.0f, 0.0f, 100.0f,
400.0f, 0.0f, 200.0f,
400.0f, 0.0f, 300.0f,
400.0f, 0.0f, 400.0f
};

无效的代码 2:

this->graphics->createBuffers(1, vboIndexsID);
this->graphics->bindBuffer(GL_ELEMENT_ARRAY_BUFFER, *vboIndexsID);
this->graphics->bufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLushort)*numIndexs, ind, GL_STATIC_DRAW);

this->graphics->createBuffers(1, vboVertexsID);
this->graphics->bindBuffer(GL_ARRAY_BUFFER, *vboVertexsID);

this->graphics->bufferData(GL_ARRAY_BUFFER, 300, list, GL_STATIC_DRAW);

和之前完全一样,但是列表数据代替了quad_vert2。

列表在哪里:

GLfloat list[75];
int j = 0;
for(int i=0;i<numVertexs;++i) {
list[j] = v->coord.x;j++;
list[j] = v->coord.y;j++;
list[j] = v->coord.z;j++;
++v;
}

v 中的数据与 quad_vert2 中的值完全相同。

glGetError,glBufferData 后始终为 0。如果我使用 glGetBufferSubData 获取缓冲区中的数据,则值是相同的。

想法?

提前致谢。

最佳答案

我会怀疑 numVertexs 的值,因为您的缓冲区数据上传调用实际上并未使用它。您应该上传 sizeof (GLfloat) * 3 * numVertexs 字节的数据,而不是使用魔数(Magic Number) 300。如果您在这两种情况下都将 300 替换为该表达式,那么它很可能会暴露您的真正问题。

关于c++ - 具有显式数组与非显式数组的 glBufferData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18453142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com