• 效率问题节点删除等


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

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

    蓝特尼斯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的效率 哪个高些 

  • 相关阅读:
    postgresql小纪
    Java的大内存分页支持
    GCViewer / MAT
    js给数组去重写法
    解决mybatis foreach 错误: Parameter '__frch_item_0' not found
    JSON字符串和JS对象之间的转换
    使用IntelliJ IDEA搭建多maven模块JAVA项目
    jstl中的sql:query标签获取的结果如何格式化输出
    Label控件如何根据字符串自定义大小
    winform/窗体鼠标事件编程中的几个问题
  • 原文地址:https://www.cnblogs.com/minggoddess/p/1904979.html
Copyright © 2020-2023  润新知