MCPcopy Create free account
hub / github.com/PacktPublishing/3D-Graphics-Rendering-Cookbook / loadScene

Function loadScene

shared/scene/Scene.cpp:116–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

114}
115
116void loadScene(const char* fileName, Scene& scene)
117{
118 FILE* f = fopen(fileName, "rb");
119
120 if (!f)
121 {
122 printf("Cannot open scene file '%s'. Please run SceneConverter from Chapter7 and/or MergeMeshes from Chapter 9", fileName);
123 return;
124 }
125
126 uint32_t sz = 0;
127 fread(&sz, sizeof(sz), 1, f);
128
129 scene.hierarchy_.resize(sz);
130 scene.globalTransform_.resize(sz);
131 scene.localTransform_.resize(sz);
132 // TODO: check > -1
133 // TODO: recalculate changedAtThisLevel() - find max depth of a node [or save scene.maxLevel]
134 fread(scene.localTransform_.data(), sizeof(glm::mat4), sz, f);
135 fread(scene.globalTransform_.data(), sizeof(glm::mat4), sz, f);
136 fread(scene.hierarchy_.data(), sizeof(Hierarchy), sz, f);
137
138 // Mesh for node [index to some list of buffers]
139 loadMap(f, scene.materialForNode_);
140 loadMap(f, scene.meshes_);
141
142 if (!feof(f))
143 {
144 loadMap(f, scene.nameForNode_);
145 loadStringList(f, scene.names_);
146
147 loadStringList(f, scene.materialNames_);
148 }
149
150 fclose(f);
151}
152
153void saveMap(FILE* f, const std::unordered_map<uint32_t, uint32_t>& map)
154{

Callers 7

mergeBistroFunction · 0.85
VKSceneDataMethod · 0.85
loadSceneMethod · 0.85
GLSceneDataLazyMethod · 0.85
loadSceneMethod · 0.85
GLSceneDataMethod · 0.85
loadSceneMethod · 0.85

Calls 2

loadMapFunction · 0.85
loadStringListFunction · 0.85

Tested by

no test coverage detected