zoukankan      html  css  js  c++  java
  • Ogre中Mesh的加载过程详述

    转自:http://blog.csdn.net/yanonsoftware/article/details/1031891

    如果新开始写一个3D渲染引擎,Mesh应该是一个很好的切入点。当一个看似简单的Mesh渲染到窗口时,说明引擎的架构已经确定,并验证了。想了解Ogre内部的机制, 可以先看看Mesh的加载过程,这里主要涉及到Resource是如何管理的,Material是怎样处理的,Resource和HardwareBuffer是如何关联的。对于前面教程代码的执行过程做一下分析:

    创建一个Entity(加载Mesh及其相关的Material)的调用流程如下:
    SceneManager::createEntity()
    ->SceneManager::createMovableObject()
    ->MovableObjectFactory::createInstance()
    ->EntityFactory::createInstanceImpl()
    主要的操作就在这个函数中完成,其中第一步为加载Mesh,Mesh包含若干SubMesh,此时并不加载相关的材质,只是记录所关联的材质名称;
    -->MeshManager::load()
    -->Mesh::load()
    -->Mesh::loadImpl()
    -->MeshSerializer::importMesh()
    第二步为new一个Entity对象,其中包含创建SubEntity对象并加载相关的“材质”。
    -->Entity::Entity()
    -->Entity::buildSubEntityList()
    -->SubEntity::setMaterialName()
    -->Material::loadImpl()
    -->Material::compile()
     
    下面是相关的一个class的UML图:
  • 相关阅读:
    Go笔记
    EFCore CodeFirst操作MySQL
    基于NET Core简单操作Kafka
    NETCore2.2/3.0+使用带有权限验证的Swagger
    Net操作RabbitMQ
    Mysql报错问题汇总
    GDSM自动化部署shell脚本
    NET操作Redis
    ViewState原理
    使用jsonp跨域请求
  • 原文地址:https://www.cnblogs.com/hnfxs/p/3185362.html
Copyright © 2011-2022 走看看