using only the neeeded number of vertex positions

This commit is contained in:
devZoGok
2024-08-19 18:23:09 +03:00
parent 6ce16b0837
commit 19990e48f4
8 changed files with 145 additions and 72 deletions
+14 -11
View File
@@ -18,19 +18,22 @@ namespace vb01{
Vector2 subQuadSize = Vector2(size.x / numHorQuads, size.y / numVertQuads);
MeshData::Vertex *vertices = new MeshData::Vertex[numVerts];
Vector3 *faceVertPos = new Vector3[6];
Vector3 *norm = new Vector3(Vector3::VEC_J);
for(int i = 0; i < numHorQuads; i++){
for(int j = 0; j < numVertQuads; j++){
int id = i * 6 * numHorQuads + j * 6;
Vector2 offset = Vector2(subQuadSize.x, subQuadSize.y);
Vector3 faceVertPos[]{
Vector3(-.5 * size.x + offset.x * j, 0, -.5 * size.y + offset.y * i),
Vector3(-.5 * size.x + offset.x * (j + 1), 0, -.5 * size.y + offset.y * (i + 1)),
Vector3(-.5 * size.x + offset.x * (j + 1), 0, -.5 * size.y + offset.y * i),
Vector3(-.5 * size.x + offset.x * j, 0, -.5 * size.y + offset.y * i),
Vector3(-.5 * size.x + offset.x * j, 0, -.5 * size.y + offset.y * (i + 1)),
Vector3(-.5 * size.x + offset.x * (j + 1), 0, -.5 * size.y + offset.y * (i + 1))
};
faceVertPos[0] = Vector3(-.5 * size.x + offset.x * j, 0, -.5 * size.y + offset.y * i);
faceVertPos[1] = Vector3(-.5 * size.x + offset.x * (j + 1), 0, -.5 * size.y + offset.y * (i + 1));
faceVertPos[2] = Vector3(-.5 * size.x + offset.x * (j + 1), 0, -.5 * size.y + offset.y * i);
faceVertPos[3] = Vector3(-.5 * size.x + offset.x * j, 0, -.5 * size.y + offset.y * i);
faceVertPos[4] = Vector3(-.5 * size.x + offset.x * j, 0, -.5 * size.y + offset.y * (i + 1));
faceVertPos[5] = Vector3(-.5 * size.x + offset.x * (j + 1), 0, -.5 * size.y + offset.y * (i + 1));
Vector2 faceVertUv[]{
Vector2(float(j) / numHorQuads, float(i) / numVertQuads),
Vector2(float(j + 1) / numHorQuads, float(i + 1) / numVertQuads),
@@ -48,10 +51,10 @@ namespace vb01{
}
MeshData::Vertex v;
v.pos = faceVertPos[k];
v.pos = &faceVertPos[k];
v.uv = faceVertUv[k];
v.tan = Vector3::VEC_I;
v.norm = Vector3::VEC_J;
v.norm = norm;
v.biTan = Vector3::VEC_K;
vertices[id + k] = v;
}
@@ -63,6 +66,6 @@ namespace vb01{
for(int i = 0; i < numVerts; i++)
indices[i] = i;
meshBase = MeshData(vertices, indices, numTris);
meshBase = MeshData((Vector3*)faceVertPos, nullptr, nullptr, nullptr, 6, nullptr, vertices, indices, numTris);
}
}