32 float halfSize = size * 0.5f;
35 Vec3(-halfSize, -halfSize, -halfSize),
36 Vec3(halfSize, -halfSize, -halfSize),
37 Vec3(halfSize, halfSize, -halfSize),
38 Vec3(-halfSize, halfSize, -halfSize),
39 Vec3(-halfSize, -halfSize, halfSize),
40 Vec3(halfSize, -halfSize, halfSize),
41 Vec3(halfSize, halfSize, halfSize),
42 Vec3(-halfSize, halfSize, halfSize)
46 Vec4(1.0f, 0.0f, 0.0f, 1.0f),
47 Vec4(0.0f, 1.0f, 0.0f, 1.0f),
48 Vec4(0.0f, 0.0f, 1.0f, 1.0f),
49 Vec4(1.0f, 1.0f, 0.0f, 1.0f),
50 Vec4(1.0f, 0.0f, 1.0f, 1.0f),
51 Vec4(0.0f, 1.0f, 1.0f, 1.0f)
61 mesh->
addVertex(vertices[4], colors[0], texCoords[0]);
62 mesh->
addVertex(vertices[5], colors[0], texCoords[1]);
63 mesh->
addVertex(vertices[6], colors[0], texCoords[2]);
64 mesh->
addVertex(vertices[7], colors[0], texCoords[3]);
66 mesh->
addVertex(vertices[0], colors[1], texCoords[1]);
67 mesh->
addVertex(vertices[1], colors[1], texCoords[0]);
68 mesh->
addVertex(vertices[2], colors[1], texCoords[3]);
69 mesh->
addVertex(vertices[3], colors[1], texCoords[2]);
71 mesh->
addVertex(vertices[3], colors[2], texCoords[0]);
72 mesh->
addVertex(vertices[2], colors[2], texCoords[1]);
73 mesh->
addVertex(vertices[6], colors[2], texCoords[2]);
74 mesh->
addVertex(vertices[7], colors[2], texCoords[3]);
76 mesh->
addVertex(vertices[0], colors[3], texCoords[0]);
77 mesh->
addVertex(vertices[1], colors[3], texCoords[1]);
78 mesh->
addVertex(vertices[5], colors[3], texCoords[2]);
79 mesh->
addVertex(vertices[4], colors[3], texCoords[3]);
81 mesh->
addVertex(vertices[1], colors[4], texCoords[0]);
82 mesh->
addVertex(vertices[2], colors[4], texCoords[1]);
83 mesh->
addVertex(vertices[6], colors[4], texCoords[2]);
84 mesh->
addVertex(vertices[5], colors[4], texCoords[3]);
86 mesh->
addVertex(vertices[0], colors[5], texCoords[0]);
87 mesh->
addVertex(vertices[3], colors[5], texCoords[1]);
88 mesh->
addVertex(vertices[7], colors[5], texCoords[2]);
89 mesh->
addVertex(vertices[4], colors[5], texCoords[3]);
95 12, 13, 14, 14, 15, 12,
96 16, 17, 18, 18, 19, 16,
97 20, 21, 22, 22, 23, 20
115 segments = std::max(3, segments);
117 std::vector<Vec3> positions;
118 std::vector<Vec4> colors;
119 std::vector<Vec2> texCoords;
120 std::vector<IndexType> indices;
122 for (
int y = 0; y <= segments; y++) {
123 for (
int x = 0; x <= segments; x++) {
124 float xSegment = (float)x / (
float)segments;
125 float ySegment = (float)y / (
float)segments;
126 float xPos = std::cos(xSegment * 2.0f * M_PI) * std::sin(ySegment * M_PI);
127 float yPos = std::cos(ySegment * M_PI);
128 float zPos = std::sin(xSegment * 2.0f * M_PI) * std::sin(ySegment * M_PI);
130 positions.push_back(
Vec3(xPos, yPos, zPos) * radius);
131 colors.push_back(
Vec4(xSegment, ySegment, 1.0f - ySegment, 1.0f));
132 texCoords.push_back(
Vec2(xSegment, ySegment));
136 for (
int y = 0; y < segments; y++) {
137 for (
int x = 0; x < segments; x++) {
138 IndexType first = (y * (segments + 1)) + x;
139 IndexType second = first + segments + 1;
141 indices.push_back(first);
142 indices.push_back(second);
143 indices.push_back(first + 1);
145 indices.push_back(second);
146 indices.push_back(second + 1);
147 indices.push_back(first + 1);
151 for (
size_t i = 0; i < positions.size(); i++) {
152 mesh->
addVertex(positions[i], colors[i], texCoords[i]);