projects
/
demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
assign mesh, material to objects
[demo]
/
src
/
scene.cc
diff --git
a/src/scene.cc
b/src/scene.cc
index
e53e5a3
..
7f9a879
100644
(file)
--- a/
src/scene.cc
+++ b/
src/scene.cc
@@
-29,20
+29,21
@@
Scene::Scene() {}
Scene::~Scene()
{
Scene::~Scene()
{
- /* clear meshes */
for(size_t i=0; i<meshes.size(); ++i)
delete meshes[i];
meshes.clear();
for(size_t i=0; i<meshes.size(); ++i)
delete meshes[i];
meshes.clear();
- /* clear materials */
for(size_t i=0; i<materials.size(); ++i)
delete materials[i];
materials.clear();
for(size_t i=0; i<materials.size(); ++i)
delete materials[i];
materials.clear();
- /* clear textures */
- for(size_t i= 0; i<textures.size(); ++i)
+ for(size_t i=0; i<textures.size(); ++i)
delete textures[i];
textures.clear();
delete textures[i];
textures.clear();
+
+ for(size_t i=0; i<objects.size(); ++i)
+ delete objects[i];
+ objects.clear();
}
bool Scene::load(const char *fname)
}
bool Scene::load(const char *fname)
@@
-76,7
+77,13
@@
bool Scene::load(const char *fname)
}
/* create objects */
}
/* create objects */
-
+ for(unsigned int i=0; i<scene->mNumMeshes; ++i) {
+ Object *object = new Object();
+ object->mesh = meshes[i];
+ int idx = meshes[i]->mat_idx;
+ object->material = materials[idx];
+ objects.push_back(object);
+ }
aiReleaseImport(scene);
return true;
aiReleaseImport(scene);
return true;
@@
-164,6
+171,8
@@
static Mesh *load_mesh(const aiScene *scene, unsigned int index)
else
fprintf(stderr, "No faces found.\n");
else
fprintf(stderr, "No faces found.\n");
+ mesh->mat_idx = amesh->mMaterialIndex;
+ printf("material idx:%u", mesh->mat_idx);
return mesh;
}
return mesh;
}
@@
-179,7
+188,9
@@
static Material *load_material(const aiScene *ascene, Scene *scene, unsigned int
mat->dtex = 0;
mat->shininess = 40;
mat->dtex = 0;
mat->shininess = 40;
- // mat->name = std::string(amat->name.data);
+ // aiString name;
+ // amat->Get(AI_MATKEY_NAME, name);
+ // mat->name = std::string(name.data);
aiColor4D color;
aiGetMaterialColor(amat, AI_MATKEY_COLOR_DIFFUSE, &color);
aiColor4D color;
aiGetMaterialColor(amat, AI_MATKEY_COLOR_DIFFUSE, &color);