1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 12:45:29 +08:00
This commit is contained in:
Meow J
2017-02-19 00:38:56 +08:00
parent 4014f37934
commit 87b88bc590

View File

@@ -6,15 +6,15 @@
翻译 | [Django](http://bullteacher.com/) 翻译 | [Django](http://bullteacher.com/)
校对 | [Geequlim](http://geequlim.com) 校对 | [Geequlim](http://geequlim.com)
现在是时候着手启用Assimp并开始创建实际的加载和转换代码了。本教程的目标是创建另一个类,这个类可以表达模型(Model)的全部。更确切的说,一个模型包含多个网格(Mesh)一个网格可能带有多个对象。一个别墅,包含一个木制阳台,一个尖顶或许也有一个游泳池,它仍然被加载为一个单一模型。我们通过Assimp加载模型把它们转变为多个`Mesh`对象,这些对象是是上一节教程里创建的 现在是时候着手启用Assimp并开始创建实际的加载和转换代码了。本教程的目标是创建另一个能够完整表示模型(Model)的类,更确切的说,一个包含多个网格(Mesh)并且可能带有多个对象的模型。也就是说,一个包含木制阳台、塔楼、甚至游泳池的房子,仍然可以被加载为单独的一个模型。我们通过Assimp加载模型把它们转变为多个在[上一节](02 Mesh.md)中创建的<fun>Mesh</fun>对象
闲话少说,我把Model类的结构呈现给你: 闲话少说,我会先把<fun>Model</fun>类的结构给你:
```c++ ```c++
class Model class Model
{ {
public: public:
/* 成员函数 */ /* 函数 */
Model(GLchar* path) Model(GLchar* path)
{ {
this->loadModel(path); this->loadModel(path);
@@ -24,12 +24,12 @@ class Model
/* 模型数据 */ /* 模型数据 */
vector<Mesh> meshes; vector<Mesh> meshes;
string directory; string directory;
/* 函数 */
/* 私有成员函数 */
void loadModel(string path); void loadModel(string path);
void processNode(aiNode* node, const aiScene* scene); void processNode(aiNode* node, const aiScene* scene);
Mesh processMesh(aiMesh* mesh, const aiScene* scene); Mesh processMesh(aiMesh* mesh, const aiScene* scene);
vector<Texture> loadMaterialTextures(aiMaterial* mat, aiTextureType type, string typeName); vector<Texture> loadMaterialTextures(aiMaterial* mat, aiTextureType type,
string typeName);
}; };
``` ```