Problem med vertex arrays i OpenGL
Jag tänkte använda mig utav vertex arrays i ett program istället för imidiate mode, men jag får det inte att fungera.
Min imidiate mode-kod som fungerar är:
glBegin(GL_TRIANGLES);
calcVect1(x, z, step, vec1, vec2, vec3);
calcVectNorm(vec1, vec2, vec3, &normx, &normy, &normz);
glNormal3f(normx, normy, normz);
glVertex3i(x, getHeight(x, z, 0), z);
glVertex3i(x, getHeight(x, z + step,0), z + step);
glVertex3i(x + step, getHeight(x + step, z + step,0), z + step);
calcVect2(x, z, step, vec1, vec2, vec3);
calcVectNorm(vec1, vec2, vec3, &normx, &normy, &normz);
glNormal3f(normx, normy, normz);
glVertex3i(x + step, getHeight(x + step, z + step,0), z + step);
glVertex3i(x + step, getHeight(x + step, z,0), z);
glVertex3i(x, getHeight(x, z, 0), z);
glEnd();
Medan min vertex array-kod som inte fungerar ser ut så här:
calcVect1(x, z, step, vec1, vec2, vec3);
calcVectNorm(vec1, vec2, vec3, &normx, &normy, &normz);
float indices[18] = {x, getHeight(x, z, 0), z, x, getHeight(x, z + step,0), z + step, x + step, getHeight(x + step, z + step,0), z + step, x + step, getHeight(x + step, z + step,0), z + step, x + step, getHeight(x + step, z,0), z, x, getHeight(x, z, 0), z};
vertices[0][0] = 0;
vertices[0][1] = 1;
vertices[0][2] = 2;
normals[0][0] = normx;
normals[0][1] = normy;
normals[0][2] = normz;
calcVect2(x, z, step, vec1, vec2, vec3);
calcVectNorm(vec1, vec2, vec3, &normx, &normy, &normz);
vertices[1][0] = 3;
vertices[1][1] = 4;
vertices[1][2] = 5;
normals[1][0] = normx;
normals[2][1] = normy;
normals[3][2] = normz;
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, normals);
glDrawElements(GL_TRIANGLES, 18, GL_UNSIGNED_BYTE, indices);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
Här är en skärmdump, vänster imidiate mode och höger mitt försök till vertex arrays.