zoukankan      html  css  js  c++  java
  • 效率问题节点删除等

    猜测一 :大量节点会导致帧率下降

    懒得去验证 至少如果可以没有这么多的节点也能好使 就应该去掉 。若无必要勿增实体

    蓝特尼斯1。不到必要的时候不要加载资源,2。一旦确定后面有一长段时间不需要的资源,必须立刻卸载

        这里的资源包括任何进入内存的对象,比如文件句柄、内存分配,对象分配等等

    所以这里是必须优化的

    猜测二:每个cube都画了6个面,实际上紧挨的两个cube中间遮盖住的面是不用画的 

       要解决这个问题一个可能的方法是 用manulobj只画 外层的面至于效率如何。。

      如果能开ogre mesh 的遮挡面剔除HBR 此问题可解

    有关节点删除问题 看到一篇好帖子

    How to efficiently add and remove 3D-objects from the scene during run-time (like rockets being fired)

    他说动态加载mesh的时候 会非常慢尽管在小项目里看不出差别,,,解决方案是 在createscene的时候加载一堆mensh放到stack里面  用的时候pop  不用了就push
    上代码吧 代码总是容易说明问题
    stack rocketEntities;
    
    
    
    for (unsigned int t = 0; t < 100; t++)
        {
          char tmp[20];
          sprintf(tmp, "rocket_%d", t);
          Entity* newRocketEntity = mSceneMgr->createEntity(tmp, "Rocket.mesh");
          newRocketEntity->setVisible(false);
          rocketEntities.push(newRocketEntity);
        }
    
    
    
    
    class Rocket
        {
        protected:
          SceneNode* rocketNode;
          string rocketEntityName;
        public:
          Rocket(const Vector3& position, const Quaternion& direction)
          {
            rocketNode = static_cast<SceneNode*>(sceneMgr->getRootSceneNode()->createChild());
            Entity* rocketEntity = rocketEntities.top();
            rocketEntities.pop();
            rocketEntity->setVisible(true);
            rocketEntityName = rocketEntity->getName();
            rocketNode->attachObject(rocketEntity);
            rocketNode->setOrientation(direction);
            rocketNode->setPosition(position);
          }
          ~Rocket()
          {
            Entity* rocketEntity = static_cast<Entity*>(rocketNode->detachObject(rocketEntityName));
            rocketEntity->setVisible(false);
            rocketEntities.push(rocketEntity);
            sceneMgr->getRootSceneNode()->removeAndDestroyChild(rocketNode->getName());
          }
        };
    

    引用http://www.ogre3d.org/tikiwiki/OogstsHowTo

    应该可以用到方块上的这个原理 每次的那四个小块 就不要再clone了,总体结构似乎要重新做啊。也不知道clone和stack的效率 哪个高些 

  • 相关阅读:
    Word自带的文献管理功能的具体实现步骤
    线程通信中的细节问题
    Java中static方法、程序入口函数main方法的继承问题
    Android中模拟器启动中出现“emulator-arm.exe已停止工作”
    CMD命令详解
    jQuery实现回到顶部功能
    Toad&PL/SQL修改查询信息
    TOAD常用快捷键
    ORACLE WITH AS 用法
    常用快捷键(转)
  • 原文地址:https://www.cnblogs.com/minggoddess/p/1904979.html
Copyright © 2011-2022 走看看