美文网首页OpenGL学习笔记
【五十九,模型加载-6 模型】

【五十九,模型加载-6 模型】

作者: Woodlouse | 来源:发表于2020-01-06 21:31 被阅读0次

Model

一个模型可以包含多个网格,一个网格可能带有多个对象,Model类的结构如下:

class Model 
{
    public:
        /*  成员函数   */
        Model(GLchar* path)
        {
            this->loadModel(path);
        }
        void Draw(Shader shader); 
    private:
        /*  模型数据  */
        vector<Mesh> meshes;
        string directory;

        /*  私有成员函数   */
        void loadModel(string path);
        void processNode(aiNode* node, const aiScene* scene);
        Mesh processMesh(aiMesh* mesh, const aiScene* scene);
        vector<Texture> loadMaterialTextures(aiMaterial* mat, aiTextureType type, string typeName);
};

Model类包含一个Mesh对象的向量,我们需要在构造函数中给出文件的位置。之后,在构造其中,它通过loadModel函数加载文件。私有方法都被设计为处理一部分的Assimp导入的常规动作.同样,我们储存文件路径的目录,这样稍后加载纹理的时候会用到。

函数Draw没有什么特别之处,基本上是循环每个网格,调用各自的Draw函数。

void Draw(Shader shader)
{
    for(GLuint i = 0; i < this->meshes.size(); i++)
        this->meshes[i].Draw(shader);
}

相关文章

网友评论

    本文标题:【五十九,模型加载-6 模型】

    本文链接:https://www.haomeiwen.com/subject/jfaaoctx.html