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 | 1014 | const int FLOATS_PER_VERTEX = 2; // vertices |
| 1015 | − const int NUMBER_OF_INDICES = 6; // 1 quad = 2 triangles | |
| 1016 | 1015 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1017 | 1016 | |
| 1018 | 1017 | if (!details.isCreated) { |
| 1019 | 1018 | |
| 1020 | 1019 | details.isCreated = true; |
| 1021 | 1020 | details.vertices = VERTICES; |
| 1022 | − details.indices = NUMBER_OF_INDICES; | |
| 1023 | 1021 | details.vertexSize = FLOATS_PER_VERTEX; |
| 1024 | 1022 | |
| 1025 | 1023 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1026 | 1024 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1027 | − auto indicesBuffer = std::make_shared<gpu::Buffer>(); | |
| 1028 | − | |
| 1029 | 1025 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1030 | 1026 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1031 | 1027 | |
| 1032 | 1028 | details.verticesBuffer = verticesBuffer; |
| 1033 | 1029 | details.colorBuffer = colorBuffer; |
| 1034 | − details.indicesBuffer = indicesBuffer; | |
| 1035 | − | |
| 1036 | 1030 | details.streamFormat = streamFormat; |
| 1037 | 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 | 1040 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1047 | 1041 | minCorner.x, minCorner.y, |
| 1048 | 1042 | maxCorner.x, minCorner.y, |
| 1049 | − maxCorner.x, maxCorner.y, | |
| 1050 | − minCorner.x, maxCorner.y }; | |
| 1043 | + minCorner.x, maxCorner.y, | |
| 1044 | + maxCorner.x, maxCorner.y | |
| 1045 | + }; | |
| 1051 | 1046 | |
| 1052 | 1047 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; |
| 1053 | 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 | 1051 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1057 | 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 | 1054 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1069 | 1055 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1070 | − details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | |
| 1071 | 1056 | } |
| 1072 | 1057 | |
| 1073 | 1058 | batch.setInputFormat(details.streamFormat); |
| 1074 | 1059 | batch.setInputStream(0, *details.stream); |
| 1075 | − batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | |
| 1076 | − batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | |
| 1060 | + batch.draw(gpu::TRIANGLE_STRIP, 4, 0); | |
| 1077 | 1061 | } |
| 1078 | 1062 | |
| 1079 | 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 | 1105 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1122 | 1106 | const int NUM_POS_COORDS = 2; |
| 1123 | 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 | 1109 | if (!details.isCreated) { |
| 1127 | 1110 | |
| 1128 | 1111 | details.isCreated = true; |
| 1129 | 1112 | details.vertices = VERTICES; |
| 1130 | − details.indices = NUMBER_OF_INDICES; | |
| 1131 | 1113 | details.vertexSize = FLOATS_PER_VERTEX; |
| 1132 | 1114 | |
| 1133 | 1115 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1134 | 1116 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1135 | − auto indicesBuffer = std::make_shared<gpu::Buffer>(); | |
| 1136 | 1117 | |
| 1137 | 1118 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1138 | 1119 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1139 | 1120 | |
| 1140 | 1121 | details.verticesBuffer = verticesBuffer; |
| 1141 | 1122 | details.colorBuffer = colorBuffer; |
| 1142 | − details.indicesBuffer = indicesBuffer; | |
| 1143 | 1123 | |
| 1144 | 1124 | details.streamFormat = streamFormat; |
| 1145 | 1125 | details.stream = stream; |
| @@ -1155,8 +1135,9 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec2& minCorner, co · 9 unmodified lines | ||
| 1155 | 1135 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1156 | 1136 | minCorner.x, minCorner.y, texCoordMinCorner.x, texCoordMinCorner.y, |
| 1157 | 1137 | maxCorner.x, minCorner.y, texCoordMaxCorner.x, texCoordMinCorner.y, |
| 1158 | − maxCorner.x, maxCorner.y, texCoordMaxCorner.x, texCoordMaxCorner.y, | |
| 1159 | − minCorner.x, maxCorner.y, texCoordMinCorner.x, texCoordMaxCorner.y }; | |
| 1138 | + minCorner.x, maxCorner.y, texCoordMinCorner.x, texCoordMaxCorner.y, | |
| 1139 | + maxCorner.x, maxCorner.y, texCoordMaxCorner.x, texCoordMaxCorner.y | |
| 1140 | + }; | |
| 1160 | 1141 | |
| 1161 | 1142 | |
| 1162 | 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 | 1147 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1167 | 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 | 1150 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1179 | 1151 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1180 | − details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | |
| 1181 | 1152 | } |
| 1182 | 1153 | |
| 1183 | 1154 | batch.setInputFormat(details.streamFormat); |
| 1184 | 1155 | batch.setInputStream(0, *details.stream); |
| 1185 | − batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | |
| 1186 | − batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | |
| 1156 | + batch.draw(gpu::TRIANGLE_STRIP, 4, 0); | |
| 1187 | 1157 | } |
| 1188 | 1158 | |
| 1189 | 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 | 1181 | const int FLOATS_PER_VERTEX = 3; // vertices |
| 1212 | − const int NUMBER_OF_INDICES = 6; // 1 quad = 2 triangles | |
| 1213 | 1182 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1214 | 1183 | |
| 1215 | 1184 | if (!details.isCreated) { |
| 1216 | 1185 | |
| 1217 | 1186 | details.isCreated = true; |
| 1218 | 1187 | details.vertices = VERTICES; |
| 1219 | − details.indices = NUMBER_OF_INDICES; | |
| 1220 | 1188 | details.vertexSize = FLOATS_PER_VERTEX; |
| 1221 | 1189 | |
| 1222 | 1190 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1223 | 1191 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1224 | − auto indicesBuffer = std::make_shared<gpu::Buffer>(); | |
| 1225 | 1192 | |
| 1226 | 1193 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1227 | 1194 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1228 | 1195 | |
| 1229 | 1196 | details.verticesBuffer = verticesBuffer; |
| 1230 | 1197 | details.colorBuffer = colorBuffer; |
| 1231 | − details.indicesBuffer = indicesBuffer; | |
| 1232 | 1198 | |
| 1233 | 1199 | details.streamFormat = streamFormat; |
| 1234 | 1200 | details.stream = stream; |
| @@ -1243,8 +1209,9 @@ void GeometryCache::renderQuad(gpu::Batch& batch, const glm::vec3& minCorner, co · 8 unmodified lines | ||
| 1243 | 1209 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1244 | 1210 | minCorner.x, minCorner.y, minCorner.z, |
| 1245 | 1211 | maxCorner.x, minCorner.y, minCorner.z, |
| 1246 | − maxCorner.x, maxCorner.y, maxCorner.z, | |
| 1247 | − minCorner.x, maxCorner.y, maxCorner.z }; | |
| 1212 | + minCorner.x, maxCorner.y, maxCorner.z, | |
| 1213 | + maxCorner.x, maxCorner.y, maxCorner.z | |
| 1214 | + }; | |
| 1248 | 1215 | |
| 1249 | 1216 | const int NUM_COLOR_SCALARS_PER_QUAD = 4; |
| 1250 | 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 | 1220 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1254 | 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 | 1223 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1266 | 1224 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1267 | − details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | |
| 1268 | 1225 | } |
| 1269 | 1226 | |
| 1270 | 1227 | batch.setInputFormat(details.streamFormat); |
| 1271 | 1228 | batch.setInputStream(0, *details.stream); |
| 1272 | − batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | |
| 1273 | − batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | |
| 1229 | + batch.draw(gpu::TRIANGLE_STRIP, 4, 0); | |
| 1274 | 1230 | } |
| 1275 | 1231 | |
| 1276 | 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 | 1273 | const int FLOATS_PER_VERTEX = 3 + 2; // 3d vertices + text coords |
| 1318 | − const int NUMBER_OF_INDICES = 6; // 1 quad = 2 triangles | |
| 1319 | 1274 | const int VERTICES = 4; // 1 quad = 4 vertices |
| 1320 | 1275 | const int NUM_POS_COORDS = 3; |
| 1321 | 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 | 1280 | details.isCreated = true; |
| 1326 | 1281 | details.vertices = VERTICES; |
| 1327 | − details.indices = NUMBER_OF_INDICES; | |
| 1328 | 1282 | details.vertexSize = FLOATS_PER_VERTEX; // NOTE: this isn't used for BatchItemDetails maybe we can get rid of it |
| 1329 | 1283 | |
| 1330 | 1284 | auto verticesBuffer = std::make_shared<gpu::Buffer>(); |
| 1331 | 1285 | auto colorBuffer = std::make_shared<gpu::Buffer>(); |
| 1332 | − auto indicesBuffer = std::make_shared<gpu::Buffer>(); | |
| 1333 | − | |
| 1334 | 1286 | auto streamFormat = std::make_shared<gpu::Stream::Format>(); |
| 1335 | 1287 | auto stream = std::make_shared<gpu::BufferStream>(); |
| 1336 | 1288 | |
| 1337 | 1289 | details.verticesBuffer = verticesBuffer; |
| 1338 | 1290 | details.colorBuffer = colorBuffer; |
| 1339 | − details.indicesBuffer = indicesBuffer; | |
| 1340 | − | |
| 1341 | 1291 | details.streamFormat = streamFormat; |
| 1342 | 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 | 1302 | float vertexBuffer[VERTICES * FLOATS_PER_VERTEX] = { |
| 1353 | − topLeft.x, topLeft.y, topLeft.z, texCoordTopLeft.x, texCoordTopLeft.y, | |
| 1354 | 1303 | bottomLeft.x, bottomLeft.y, bottomLeft.z, texCoordBottomLeft.x, texCoordBottomLeft.y, |
| 1355 | 1304 | bottomRight.x, bottomRight.y, bottomRight.z, texCoordBottomRight.x, texCoordBottomRight.y, |
| 1305 | + topLeft.x, topLeft.y, topLeft.z, texCoordTopLeft.x, texCoordTopLeft.y, | |
| 1356 | 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 | 1313 | ((int(color.w * 255.0f) & 0xFF) << 24); |
| 1364 | 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 | 1316 | details.verticesBuffer->append(sizeof(vertexBuffer), (gpu::Byte*) vertexBuffer); |
| 1376 | 1317 | details.colorBuffer->append(sizeof(colors), (gpu::Byte*) colors); |
| 1377 | − details.indicesBuffer->append(sizeof(indices), (gpu::Byte*) indices); | |
| 1378 | 1318 | } |
| 1379 | 1319 | |
| 1380 | 1320 | batch.setInputFormat(details.streamFormat); |
| 1381 | 1321 | batch.setInputStream(0, *details.stream); |
| 1382 | − batch.setIndexBuffer(gpu::UINT16, details.indicesBuffer, 0); | |
| 1383 | − batch.drawIndexed(gpu::TRIANGLES, NUMBER_OF_INDICES, 0); | |
| 1322 | + batch.draw(gpu::TRIANGLE_STRIP, 4, 0); | |
| 1384 | 1323 | } |
| 1385 | 1324 | |
| 1386 | 1325 | void GeometryCache::renderDashedLine(gpu::Batch& batch, const glm::vec3& start, const glm::vec3& end, const glm::vec4& color, int id) { |