zoukankan      html  css  js  c++  java
  • 每天花30分钟看OGRE(13)Ogre的渲染流程,在渲染时材质是如何起作用的,材质加载和解析

    12.Ogre的渲染流程?

    A:

    clip_image002


    一个pass,最多16层贴图,8盏灯

    OgreConfig.h

    /** Define max number of texture layers allowed per pass on any card.

    */

    #define OGRE_MAX_TEXTURE_LAYERS 16

    /** Define max number of lights allowed per pass.

    */

    #define OGRE_MAX_SIMULTANEOUS_LIGHTS 8

    clip_image006

    好多管理器啊!

    clip_image008

    13.在渲染的时候,材质是如何起作用的?

    A:

    一个物体的渲染看这里

    SceneManager::renderSingleObject

    在QueuedRenderableCollection::acceptVisitorGrouped里

    // Visit Pass - allow skip 设置pass

    if (!visitor->visit(ipass->first))

    continue;

    RenderableList* rendList = ipass->second;

    RenderableList::const_iterator irend, irendend;

    irendend = rendList->end();

    // 迭代每个SubEntity,即每个SubMesh

    for (irend = rendList->begin(); irend != irendend; ++irend)

    {

    // Visit Renderable 用设置的pass渲染

    visitor->visit(const_cast<Renderable*>(*irend));

    }

    如OgreHead.mesh里

    clip_image010

    在SceneManager::_setPass这里把gpu程序绑到render system上的

    if (pass->hasVertexProgram())

    {

    mDestRenderSystem->bindGpuProgram(pass->getVertexProgram()->_getBindingDelegate());

    // bind parameters later since they can be per-object

    // does the vertex program want surface and light params passed to rendersystem?

    passSurfaceAndLightParams = pass->getVertexProgram()->getPassSurfaceAndLightStates();

    }

    就是这么起作用的!

    clip_image012

    14.材质加载和解析

    这个是程序一开始就加载配置文件

    ogre-v1-6-2\ogre\Samples\Common\bin\resources.cfg

    # Resource locations to be added to the 'boostrap' path

    # This also contains the minimum you need to use the Ogre example framework

    [Bootstrap]

    Zip=http://www.cnblogs.com/Media/packs/OgreCore.zip

    # Resource locations to be added to the default path

    [General]

    FileSystem=http://www.cnblogs.com/Media

    FileSystem=http://www.cnblogs.com/Media/fonts

    FileSystem=http://www.cnblogs.com/Media/materials/programs

    FileSystem=http://www.cnblogs.com/Media/materials/scripts

    FileSystem=http://www.cnblogs.com/Media/materials/textures

    FileSystem=http://www.cnblogs.com/Media/models

    FileSystem=http://www.cnblogs.com/Media/overlays

    FileSystem=http://www.cnblogs.com/Media/particle

    FileSystem=http://www.cnblogs.com/Media/gui

    FileSystem=http://www.cnblogs.com/Media/DeferredShadingMedia

    FileSystem=http://www.cnblogs.com/Media/PCZAppMedia

    Zip=http://www.cnblogs.com/Media/packs/cubemap.zip

    Zip=http://www.cnblogs.com/Media/packs/cubemapsJS.zip

    Zip=http://www.cnblogs.com/Media/packs/dragon.zip

    Zip=http://www.cnblogs.com/Media/packs/fresneldemo.zip

    Zip=http://www.cnblogs.com/Media/packs/ogretestmap.zip

    Zip=http://www.cnblogs.com/Media/packs/skybox.zip

    clip_image014

  • 相关阅读:
    htm与html的区别
    CLR笔记:3.共享程序集合强命名程序集
    CLR笔记:5.基元,引用和值类型
    CLR笔记:13.数组
    CLR笔记:18.可空值类型
    正则表达式
    代码大全
    wcf的部署
    Json相关
    $.ready和onload
  • 原文地址:https://www.cnblogs.com/lai3d/p/1653110.html
Copyright © 2011-2022 走看看