Handle byte stride on vertex buffers
Vertex buffers (and only vertex buffers) may have a byte stride specified.
This commit is contained in:
		
				
					committed by
					
						 Josiah VanderZee
						Josiah VanderZee
					
				
			
			
				
	
			
			
			
						parent
						
							86026f9205
						
					
				
				
					commit
					95a4030b50
				
			| @@ -0,0 +1,71 @@ | ||||
| { | ||||
|   "scene": 0, | ||||
|   "scenes" : [ | ||||
|     { | ||||
|       "nodes" : [ 0 ] | ||||
|     } | ||||
|   ], | ||||
|    | ||||
|   "nodes" : [ | ||||
|     { | ||||
|       "mesh" : 0 | ||||
|     } | ||||
|   ], | ||||
|    | ||||
|   "meshes" : [ | ||||
|     { | ||||
|       "primitives" : [ { | ||||
|         "attributes" : { | ||||
|           "POSITION" : 1 | ||||
|         }, | ||||
|         "indices" : 0 | ||||
|       } ] | ||||
|     } | ||||
|   ], | ||||
|  | ||||
|   "buffers" : [ | ||||
|     { | ||||
|       "uri" : "data:application/octet-stream;base64,AAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAA=", | ||||
|       "byteLength" : 80 | ||||
|     } | ||||
|   ], | ||||
|   "bufferViews" : [ | ||||
|     { | ||||
|       "buffer" : 0, | ||||
|       "byteOffset" : 0, | ||||
|       "byteLength" : 6, | ||||
|       "target" : 34963 | ||||
|     }, | ||||
|     { | ||||
|       "buffer" : 0, | ||||
|       "byteOffset" : 8, | ||||
|       "byteLength" : 36, | ||||
|       "byteStride" : 24, | ||||
|       "target" : 34962 | ||||
|     } | ||||
|   ], | ||||
|   "accessors" : [ | ||||
|     { | ||||
|       "bufferView" : 0, | ||||
|       "byteOffset" : 0, | ||||
|       "componentType" : 5123, | ||||
|       "count" : 3, | ||||
|       "type" : "SCALAR", | ||||
|       "max" : [ 2 ], | ||||
|       "min" : [ 0 ] | ||||
|     }, | ||||
|     { | ||||
|       "bufferView" : 1, | ||||
|       "byteOffset" : 0, | ||||
|       "componentType" : 5126, | ||||
|       "count" : 3, | ||||
|       "type" : "VEC3", | ||||
|       "max" : [ 1.0, 1.0, 0.0 ], | ||||
|       "min" : [ 0.0, 0.0, 0.0 ] | ||||
|     } | ||||
|   ], | ||||
|    | ||||
|   "asset" : { | ||||
|     "version" : "2.0" | ||||
|   } | ||||
| } | ||||
| @@ -1,8 +1,12 @@ | ||||
| #include "CReadFile.h" | ||||
|  | ||||
| #include <irrlicht.h> | ||||
|  | ||||
| // Catch needs to be included after Irrlicht so that it sees operator<< | ||||
| // declarations. | ||||
| #define CATCH_CONFIG_MAIN | ||||
| #include <catch.hpp> | ||||
| #include <irrlicht.h> | ||||
|  | ||||
| #include <iostream> | ||||
|  | ||||
| using namespace std; | ||||
| @@ -49,7 +53,11 @@ TEST_CASE("load empty gltf file") { | ||||
| } | ||||
|  | ||||
| TEST_CASE("minimal triangle") { | ||||
| 	ScopedMesh sm("source/Irrlicht/tests/assets/minimal_triangle.gltf"); | ||||
| 	auto path = GENERATE( | ||||
| 		"source/Irrlicht/tests/assets/minimal_triangle.gltf", | ||||
| 		"source/Irrlicht/tests/assets/triangle_with_vertex_stride.gltf"); | ||||
| 	INFO(path); | ||||
| 	ScopedMesh sm(path); | ||||
| 	REQUIRE(sm.getMesh() != nullptr); | ||||
| 	REQUIRE(sm.getMesh()->getMeshBufferCount() == 1); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user