Showing the changes to libraries/render-utils/src/GeometryCache.cpp (1 of 2 files). Show all
Unified · Split
| @@ -1012,27 +1012,21 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec2& minCorner, co · 1011 unmodified lines | |||
| 1012 | } | 1012 | } |
| 1013 | 1013 | ||
| 1014 | const int FLOATS_PER_VERTEX = 2; // vertices | 1014 | const int FLOATS_PER_VERTEX = 2; // vertices |
| 1015 | const int NUMBER_OF_INDICES = 6; // 1 quad = 2 triangles | ||
| 1016 | const int VERTICES = 4; // 1 quad = 4 vertices | 1015 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1017 | 1016 | ||
| 1018 | if (!details.isCreated) { | 1017 | if (!details.isCreated) { |
| 1019 | 1018 | ||
| 1020 | details.isCreated = true; | 1019 | details.isCreated = true; |
| 1021 | details.vertices = VERTICES; | 1020 | details.vertices = VERTICES; |
| 1022 | details.indices = NUMBER_OF_INDICES; | ||
| 1023 | details.vertexSize = FLOATS_PER_VERTEX; | 1021 | details.vertexSize = FLOATS_PER_VERTEX; |
| 1024 | 1022 | ||
| 1025 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); | 1023 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1026 | auto colorBuffer = std::make_shared<gpu::Buffer>(); | 1024 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1027 | auto indicesBuffer = std::make_shared<gpu::Buffer>(); | ||
| 1028 | |||
| 1029 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); | 1025 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1030 | auto stream = std::make_shared<gpu::BufferStream>(); | 1026 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1031 | 1027 | ||
| 1032 | details.verticesBuffer = verticesBuffer; | 1028 | details.verticesBuffer = verticesBuffer; |
| 1033 | details.colorBuffer = colorBuffer; | 1029 | details.colorBuffer = colorBuffer; |
| 1034 | details.indicesBuffer = indicesBuffer; | ||
| 1035 | |||
| 1036 | details.streamFormat = streamFormat; | 1030 | details.streamFormat = streamFormat; |
| 1037 | details.stream = stream; | 1031 | details.stream = stream; |
| 1038 | 1032 | ||
| @@ -1046,8 +1040,9 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec2& minCorner, co · 7 unmodified lines | |||
| 1046 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { | 1040 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1047 | minCorner.x, minCorner.y, | 1041 | minCorner.x, minCorner.y, |
| 1048 | maxCorner.x, minCorner.y, | 1042 | maxCorner.x, minCorner.y, |
| 1049 | maxCorner.x, maxCorner.y, | 1043 | minCorner.x, maxCorner.y, |
| 1050 | minCorner.x, maxCorner.y }; | 1044 | maxCorner.x, maxCorner.y |
| 1045 | }; | ||
| 1051 | 1046 | ||
| 1052 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; | 1047 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; |
| 1053 | int compactColor = ((int(color.x * 255.0f) & 0xFF)) | | 1048 | int compactColor = ((int(color.x * 255.0f) & 0xFF)) | |
| @@ -1056,24 +1051,13 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec2& minCorner, co · 2 unmodified lines | |||
| 1056 | ((int(color.w * 255.0f) & 0xFF) << 24); | 1051 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1057 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; | 1052 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; |
| 1058 | 1053 | ||
| 1059 | // Sam's recommended triangle slices | ||
| 1060 | // Triangle tri1 = { v0, v1, v3 }; | ||
| 1061 | // Triangle tri2 = { v1, v2, v3 }; | ||
| 1062 | // NOTE: Random guy on the internet's recommended triangle slices | ||
| 1063 | // Triangle tri1 = { v0, v1, v2 }; | ||
| 1064 | // Triangle tri2 = { v2, v3, v0 }; | ||
| 1065 | |||
| 1066 | quint16 indices[NUMBER_OF_INDICES] = { 0, 1, 3, 1, 2, 3 }; | ||
| 1067 | |||
| 1068 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); | 1054 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1069 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); | 1055 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1070 | details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | ||
| 1071 | } | 1056 | } |
| 1072 | 1057 | ||
| 1073 | batch.setInputFormat(details.streamFormat); | 1058 | batch.setInputFormat(details.streamFormat); |
| 1074 | batch.setInputStream(0, *details.stream); | 1059 | batch.setInputStream(0, *details.stream); |
| 1075 | batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | 1060 | batch.draw(gpu::TRIANGLE_STRIP, 4, 0); |
| 1076 | batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | ||
| 1077 | } | 1061 | } |
| 1078 | 1062 | ||
| 1079 | void GeometryCache::renderUnitCube(gpu::Batch& batch) { | 1063 | void GeometryCache::renderUnitCube(gpu::Batch& batch) { |
| @@ -1121,25 +1105,21 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec2& minCorner, co · 41 unmodified lines | |||
| 1121 | const int VERTICES = 4; // 1 quad = 4 vertices | 1105 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1122 | const int NUM_POS_COORDS = 2; | 1106 | const int NUM_POS_COORDS = 2; |
| 1123 | const int VERTEX_TEXCOORD_OFFSET = NUM_POS_COORDS * sizeof(float); | 1107 | const int VERTEX_TEXCOORD_OFFSET = NUM_POS_COORDS * sizeof(float); |
| 1124 | const int NUMBER_OF_INDICES = 6; // 1 quad = 2 triangles | ||
| 1125 | 1108 | ||
| 1126 | if (!details.isCreated) { | 1109 | if (!details.isCreated) { |
| 1127 | 1110 | ||
| 1128 | details.isCreated = true; | 1111 | details.isCreated = true; |
| 1129 | details.vertices = VERTICES; | 1112 | details.vertices = VERTICES; |
| 1130 | details.indices = NUMBER_OF_INDICES; | ||
| 1131 | details.vertexSize = FLOATS_PER_VERTEX; | 1113 | details.vertexSize = FLOATS_PER_VERTEX; |
| 1132 | 1114 | ||
| 1133 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); | 1115 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1134 | auto colorBuffer = std::make_shared<gpu::Buffer>(); | 1116 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1135 | auto indicesBuffer = std::make_shared<gpu::Buffer>(); | ||
| 1136 | 1117 | ||
| 1137 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); | 1118 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1138 | auto stream = std::make_shared<gpu::BufferStream>(); | 1119 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1139 | 1120 | ||
| 1140 | details.verticesBuffer = verticesBuffer; | 1121 | details.verticesBuffer = verticesBuffer; |
| 1141 | details.colorBuffer = colorBuffer; | 1122 | details.colorBuffer = colorBuffer; |
| 1142 | details.indicesBuffer = indicesBuffer; | ||
| 1143 | 1123 | ||
| 1144 | details.streamFormat = streamFormat; | 1124 | details.streamFormat = streamFormat; |
| 1145 | details.stream = stream; | 1125 | details.stream = stream; |
| @@ -1155,8 +1135,9 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec2& minCorner, co · 9 unmodified lines | |||
| 1155 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { | 1135 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1156 | minCorner.x, minCorner.y, texCoordMinCorner.x, texCoordMinCorner.y, | 1136 | minCorner.x, minCorner.y, texCoordMinCorner.x, texCoordMinCorner.y, |
| 1157 | maxCorner.x, minCorner.y, texCoordMaxCorner.x, texCoordMinCorner.y, | 1137 | maxCorner.x, minCorner.y, texCoordMaxCorner.x, texCoordMinCorner.y, |
| 1158 | maxCorner.x, maxCorner.y, texCoordMaxCorner.x, texCoordMaxCorner.y, | 1138 | minCorner.x, maxCorner.y, texCoordMinCorner.x, texCoordMaxCorner.y, |
| 1159 | minCorner.x, maxCorner.y, texCoordMinCorner.x, texCoordMaxCorner.y }; | 1139 | maxCorner.x, maxCorner.y, texCoordMaxCorner.x, texCoordMaxCorner.y |
| 1140 | }; | ||
| 1160 | 1141 | ||
| 1161 | 1142 | ||
| 1162 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; | 1143 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; |
| @@ -1166,24 +1147,13 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec2& minCorner, co · 3 unmodified lines | |||
| 1166 | ((int(color.w * 255.0f) & 0xFF) << 24); | 1147 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1167 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; | 1148 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; |
| 1168 | 1149 | ||
| 1169 | // Sam's recommended triangle slices | ||
| 1170 | // Triangle tri1 = { v0, v1, v3 }; | ||
| 1171 | // Triangle tri2 = { v1, v2, v3 }; | ||
| 1172 | // NOTE: Random guy on the internet's recommended triangle slices | ||
| 1173 | // Triangle tri1 = { v0, v1, v2 }; | ||
| 1174 | // Triangle tri2 = { v2, v3, v0 }; | ||
| 1175 | |||
| 1176 | quint16 indices[NUMBER_OF_INDICES] = { 0, 1, 3, 1, 2, 3 }; | ||
| 1177 | |||
| 1178 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); | 1150 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1179 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); | 1151 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1180 | details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | ||
| 1181 | } | 1152 | } |
| 1182 | 1153 | ||
| 1183 | batch.setInputFormat(details.streamFormat); | 1154 | batch.setInputFormat(details.streamFormat); |
| 1184 | batch.setInputStream(0, *details.stream); | 1155 | batch.setInputStream(0, *details.stream); |
| 1185 | batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | 1156 | batch.draw(gpu::TRIANGLE_STRIP, 4, 0); |
| 1186 | batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | ||
| 1187 | } | 1157 | } |
| 1188 | 1158 | ||
| 1189 | void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& minCorner, const glm::vec3& maxCorner, const glm::vec4& color, int id) { | 1159 | void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& minCorner, const glm::vec3& maxCorner, const glm::vec4& color, int id) { |
| @@ -1209,26 +1179,22 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& minCorner, co · 19 unmodified lines | |||
| 1209 | } | 1179 | } |
| 1210 | 1180 | ||
| 1211 | const int FLOATS_PER_VERTEX = 3; // vertices | 1181 | const int FLOATS_PER_VERTEX = 3; // vertices |
| 1212 | const int NUMBER_OF_INDICES = 6; // 1 quad = 2 triangles | ||
| 1213 | const int VERTICES = 4; // 1 quad = 4 vertices | 1182 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1214 | 1183 | ||
| 1215 | if (!details.isCreated) { | 1184 | if (!details.isCreated) { |
| 1216 | 1185 | ||
| 1217 | details.isCreated = true; | 1186 | details.isCreated = true; |
| 1218 | details.vertices = VERTICES; | 1187 | details.vertices = VERTICES; |
| 1219 | details.indices = NUMBER_OF_INDICES; | ||
| 1220 | details.vertexSize = FLOATS_PER_VERTEX; | 1188 | details.vertexSize = FLOATS_PER_VERTEX; |
| 1221 | 1189 | ||
| 1222 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); | 1190 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1223 | auto colorBuffer = std::make_shared<gpu::Buffer>(); | 1191 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1224 | auto indicesBuffer = std::make_shared<gpu::Buffer>(); | ||
| 1225 | 1192 | ||
| 1226 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); | 1193 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1227 | auto stream = std::make_shared<gpu::BufferStream>(); | 1194 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1228 | 1195 | ||
| 1229 | details.verticesBuffer = verticesBuffer; | 1196 | details.verticesBuffer = verticesBuffer; |
| 1230 | details.colorBuffer = colorBuffer; | 1197 | details.colorBuffer = colorBuffer; |
| 1231 | details.indicesBuffer = indicesBuffer; | ||
| 1232 | 1198 | ||
| 1233 | details.streamFormat = streamFormat; | 1199 | details.streamFormat = streamFormat; |
| 1234 | details.stream = stream; | 1200 | details.stream = stream; |
| @@ -1243,8 +1209,9 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& minCorner, co · 8 unmodified lines | |||
| 1243 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { | 1209 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1244 | minCorner.x, minCorner.y, minCorner.z, | 1210 | minCorner.x, minCorner.y, minCorner.z, |
| 1245 | maxCorner.x, minCorner.y, minCorner.z, | 1211 | maxCorner.x, minCorner.y, minCorner.z, |
| 1246 | maxCorner.x, maxCorner.y, maxCorner.z, | 1212 | minCorner.x, maxCorner.y, maxCorner.z, |
| 1247 | minCorner.x, maxCorner.y, maxCorner.z }; | 1213 | maxCorner.x, maxCorner.y, maxCorner.z |
| 1214 | }; | ||
| 1248 | 1215 | ||
| 1249 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; | 1216 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; |
| 1250 | int compactColor = ((int(color.x * 255.0f) & 0xFF)) | | 1217 | int compactColor = ((int(color.x * 255.0f) & 0xFF)) | |
| @@ -1253,24 +1220,13 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& minCorner, co · 2 unmodified lines | |||
| 1253 | ((int(color.w * 255.0f) & 0xFF) << 24); | 1220 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1254 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; | 1221 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; |
| 1255 | 1222 | ||
| 1256 | // Sam's recommended triangle slices | ||
| 1257 | // Triangle tri1 = { v0, v1, v3 }; | ||
| 1258 | // Triangle tri2 = { v1, v2, v3 }; | ||
| 1259 | // NOTE: Random guy on the internet's recommended triangle slices | ||
| 1260 | // Triangle tri1 = { v0, v1, v2 }; | ||
| 1261 | // Triangle tri2 = { v2, v3, v0 }; | ||
| 1262 | |||
| 1263 | quint16 indices[NUMBER_OF_INDICES] = { 0, 1, 3, 1, 2, 3 }; | ||
| 1264 | |||
| 1265 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); | 1223 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1266 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); | 1224 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1267 | details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | ||
| 1268 | } | 1225 | } |
| 1269 | 1226 | ||
| 1270 | batch.setInputFormat(details.streamFormat); | 1227 | batch.setInputFormat(details.streamFormat); |
| 1271 | batch.setInputStream(0, *details.stream); | 1228 | batch.setInputStream(0, *details.stream); |
| 1272 | batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | 1229 | batch.draw(gpu::TRIANGLE_STRIP, 4, 0); |
| 1273 | batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | ||
| 1274 | } | 1230 | } |
| 1275 | 1231 | ||
| 1276 | void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& topLeft, const glm::vec3& bottomLeft, | 1232 | void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& topLeft, const glm::vec3& bottomLeft, |
| @@ -1315,7 +1271,6 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& topLeft, cons · 38 unmodified lines | |||
| 1315 | } | 1271 | } |
| 1316 | 1272 | ||
| 1317 | const int FLOATS_PER_VERTEX = 3 + 2; // 3d vertices + text coords | 1273 | const int FLOATS_PER_VERTEX = 3 + 2; // 3d vertices + text coords |
| 1318 | const int NUMBER_OF_INDICES = 6; // 1 quad = 2 triangles | ||
| 1319 | const int VERTICES = 4; // 1 quad = 4 vertices | 1274 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1320 | const int NUM_POS_COORDS = 3; | 1275 | const int NUM_POS_COORDS = 3; |
| 1321 | const int VERTEX_TEXCOORD_OFFSET = NUM_POS_COORDS * sizeof(float); | 1276 | const int VERTEX_TEXCOORD_OFFSET = NUM_POS_COORDS * sizeof(float); |
| @@ -1324,20 +1279,15 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& topLeft, cons · 2 unmodified lines | |||
| 1324 | 1279 | ||
| 1325 | details.isCreated = true; | 1280 | details.isCreated = true; |
| 1326 | details.vertices = VERTICES; | 1281 | details.vertices = VERTICES; |
| 1327 | details.indices = NUMBER_OF_INDICES; | ||
| 1328 | details.vertexSize = FLOATS_PER_VERTEX; // NOTE: this isn't used for BatchItemDetails maybe we can get rid of it | 1282 | details.vertexSize = FLOATS_PER_VERTEX; // NOTE: this isn't used for BatchItemDetails maybe we can get rid of it |
| 1329 | 1283 | ||
| 1330 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); | 1284 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1331 | auto colorBuffer = std::make_shared<gpu::Buffer>(); | 1285 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1332 | auto indicesBuffer = std::make_shared<gpu::Buffer>(); | ||
| 1333 | |||
| 1334 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); | 1286 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1335 | auto stream = std::make_shared<gpu::BufferStream>(); | 1287 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1336 | 1288 | ||
| 1337 | details.verticesBuffer = verticesBuffer; | 1289 | details.verticesBuffer = verticesBuffer; |
| 1338 | details.colorBuffer = colorBuffer; | 1290 | details.colorBuffer = colorBuffer; |
| 1339 | details.indicesBuffer = indicesBuffer; | ||
| 1340 | |||
| 1341 | details.streamFormat = streamFormat; | 1291 | details.streamFormat = streamFormat; |
| 1342 | details.stream = stream; | 1292 | details.stream = stream; |
| 1343 | 1293 | ||
| @@ -1350,9 +1300,9 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& topLeft, cons · 6 unmodified lines | |||
| 1350 | 1300 | ||
| 1351 | 1301 | ||
| 1352 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { | 1302 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1353 | topLeft.x, topLeft.y, topLeft.z, texCoordTopLeft.x, texCoordTopLeft.y, | ||
| 1354 | bottomLeft.x, bottomLeft.y, bottomLeft.z, texCoordBottomLeft.x, texCoordBottomLeft.y, | 1303 | bottomLeft.x, bottomLeft.y, bottomLeft.z, texCoordBottomLeft.x, texCoordBottomLeft.y, |
| 1355 | bottomRight.x, bottomRight.y, bottomRight.z, texCoordBottomRight.x, texCoordBottomRight.y, | 1304 | bottomRight.x, bottomRight.y, bottomRight.z, texCoordBottomRight.x, texCoordBottomRight.y, |
| 1305 | topLeft.x, topLeft.y, topLeft.z, texCoordTopLeft.x, texCoordTopLeft.y, | ||
| 1356 | topRight.x, topRight.y, topRight.z, texCoordTopRight.x, texCoordTopRight.y, | 1306 | topRight.x, topRight.y, topRight.z, texCoordTopRight.x, texCoordTopRight.y, |
| 1357 | }; | 1307 | }; |
| 1358 | 1308 | ||
| @@ -1363,24 +1313,13 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& topLeft, cons · 4 unmodified lines | |||
| 1363 | ((int(color.w * 255.0f) & 0xFF) << 24); | 1313 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1364 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; | 1314 | int colors[NUM_COLOR_SCALARS_PER_QUAD] = { compactColor, compactColor, compactColor, compactColor }; |
| 1365 | 1315 | ||
| 1366 | // Sam's recommended triangle slices | ||
| 1367 | // Triangle tri1 = { v0, v1, v3 }; | ||
| 1368 | // Triangle tri2 = { v1, v2, v3 }; | ||
| 1369 | // NOTE: Random guy on the internet's recommended triangle slices | ||
| 1370 | // Triangle tri1 = { v0, v1, v2 }; | ||
| 1371 | // Triangle tri2 = { v2, v3, v0 }; | ||
| 1372 | |||
| 1373 | quint16 indices[NUMBER_OF_INDICES] = { 0, 1, 3, 1, 2, 3 }; | ||
| 1374 | |||
| 1375 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); | 1316 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1376 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); | 1317 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1377 | details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | ||
| 1378 | } | 1318 | } |
| 1379 | 1319 | ||
| 1380 | batch.setInputFormat(details.streamFormat); | 1320 | batch.setInputFormat(details.streamFormat); |
| 1381 | batch.setInputStream(0, *details.stream); | 1321 | batch.setInputStream(0, *details.stream); |
| 1382 | batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | 1322 | batch.draw(gpu::TRIANGLE_STRIP, 4, 0); |
| 1383 | batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | ||
| 1384 | } | 1323 | } |
| 1385 | 1324 | ||
| 1386 | void GeometryCache::renderDashedLine(gpu::Batch& batch, const glm::vec3& start, const glm::vec3& end, const glm::vec4& color, int id) { | 1325 | void GeometryCache::renderDashedLine(gpu::Batch& batch, const glm::vec3& start, const glm::vec3& end, const glm::vec4& color, int id) { |