Add method to generate a plane mesh, planned for heightmaps
This commit is contained in:
parent
0bd6cdf6a8
commit
4a9653642e
|
@ -312,3 +312,53 @@ Mesh generateSphere(float sphereRadius, int slices, int layers) {
|
||||||
mesh.indices = indices;
|
mesh.indices = indices;
|
||||||
return mesh;
|
return mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Mesh generateSegmentedPlane(float width, float height, uint x_segments, uint y_segments) {
|
||||||
|
// i should perhaps initialize these to the length they should be, but insert is prettier :3
|
||||||
|
vector<vec3> vertices;
|
||||||
|
vector<vec3> normals;
|
||||||
|
vector<vec2> textureCoordinates;
|
||||||
|
vector<uint> indices;
|
||||||
|
|
||||||
|
float step_x = width/x_segments;
|
||||||
|
float step_y = height/y_segments;
|
||||||
|
float tex_step_x = 1.0/x_segments;
|
||||||
|
float tex_step_y = 1.0/y_segments;
|
||||||
|
uint index_offset = 0;
|
||||||
|
|
||||||
|
for (uint x = 0; x < x_segments; x++)
|
||||||
|
for (uint y = 0; y < y_segments; y++) {
|
||||||
|
vertices.insert(vertices.end(), {
|
||||||
|
vec3(step_x*(x+0), step_y*(y+0), 0),
|
||||||
|
vec3(step_x*(x+0), step_y*(y+1), 0),
|
||||||
|
vec3(step_x*(x+1), step_y*(y+0), 0),
|
||||||
|
vec3(step_x*(x+1), step_y*(y+1), 0),
|
||||||
|
});
|
||||||
|
normals.insert(vertices.end(), {
|
||||||
|
vec3(0.0, 0.0, 1.0),
|
||||||
|
vec3(0.0, 0.0, 1.0),
|
||||||
|
vec3(0.0, 0.0, 1.0),
|
||||||
|
vec3(0.0, 0.0, 1.0),
|
||||||
|
});
|
||||||
|
textureCoordinates.insert(textureCoordinates.end(), {
|
||||||
|
vec2(tex_step_x*(x+0), tex_step_y*(y+0)),
|
||||||
|
vec2(tex_step_x*(x+0), tex_step_y*(y+1)),
|
||||||
|
vec2(tex_step_x*(x+1), tex_step_y*(y+0)),
|
||||||
|
vec2(tex_step_x*(x+1), tex_step_y*(y+1)),
|
||||||
|
});
|
||||||
|
indices.insert(indices.end(), {
|
||||||
|
index_offset + 0, index_offset + 1, index_offset + 2,
|
||||||
|
index_offset + 1, index_offset + 2, index_offset + 3,
|
||||||
|
});
|
||||||
|
index_offset += 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
Mesh mesh;
|
||||||
|
mesh.vertices = vertices;
|
||||||
|
mesh.normals = normals;
|
||||||
|
mesh.textureCoordinates = textureCoordinates;
|
||||||
|
mesh.indices = indices;
|
||||||
|
|
||||||
|
return mesh;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue