我想几个立方体的位置,正常和颜色存储到一个结构,并存储其中他们应该被绘制的指数,在载体中。但是我的做法触发了错误malloc.c
我在做什么
我加载立方体的位置,从一个文件中的多维数据集的颜色沿着:
vector<vec3> cp; // size 51
vector<vec3> cc; // size 51
readLevelFile("levelfile.txt", cp, cc);
我用对象加载器加载立方体的数据:
vector<vec3> vertexPositions; // size 24
vector<int> indices; // size 36
vector<int> outIndices; // empty
vector<vec3> normals; // size 24
vector<vec2> uvs; // unused
loadObject("cube_with_normals.obj", vertexPositions, indices, normals, uvs, 10.0f);
然后我创建一个新的结构和创建者的一个实例:
struct Vertex {
vec3 position;
vec3 normal;
vec3 color;
vec2 texture;
};
Vertex *cubeData = new Vertex;
然后再遍历立方体的位置数:
for (int j = 0; j < cp.size()*vertexPositions.size(); j+=vertexPositions.size()) {
for (int i = 0; i < vertexPositions.size(); i++)
{
cubeData[j+i].position = vertexPositions[i]+cc[j/vertexPositions.size()];
cubeData[j+i].normal = normals[i];
cubeData[j+i].color = cc[j/vertexPositions.size()];
}
for (int i=0; i < indices.size();i++)
{
outIndices.push_back(indices[i]+indices.size()*(j/vertexPositions.size()));
}
}
然而,这触发malloc.c断点
编辑: 最终我希望数据看起来像这样:
Vertex groundData[] = {
{ vec3(-1000.0,ypos,1000.0), vec3(0.0f, 1.0f, 0.0f), color, vec2(0.0f, 0.0f) },
{ vec3(-1000.0,ypos,-1000.0), vec3(0.0f, 1.0f, 0.0f), color, vec2(0.0f, 1.0f) },
{ vec3(1000.0,ypos,-1000.0), vec3(0.0f, 1.0f, 0.0f), color, vec2(1.0f, 1.0f) },
{ vec3(1000.0,ypos,1000.0), vec3(0.0f, 1.0f, 0.0f), color, vec2(1.0f, 0.0f) }
};
这简化在缓冲器中存储所述数据
那究竟如何的内容一个向量看起来像。正如我在评论/回答中所说的,只需调用'std :: vector :: data()'成员函数来检索基础数组。 – Manu343726
@ Manu343726:除非您认为这是关于C++ 11的问题,否则'std :: vector'没有'data(...)'成员函数。我会建议使用'&vector [0]'来代替,它更便于携带。 –
谁低估了我的问题:小心解释,这样我就不会再犯同样的错误了吗? – Attaque