我想幾個立方體的位置,正常和顏色存儲到一個結構,並存儲其中他們應該被繪製的指數,在載體中。但是我的做法觸發了錯誤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