当前位置: 首页 > news >正文

温州网站设计方案鸿蒙系统软件开发教程

温州网站设计方案,鸿蒙系统软件开发教程,泰安,英文自助建站只是粗略的分析原理#xff0c;大虾轻喷~~ Gaia引擎中没有场景管理器#xff08;scenemanager#xff09;这种东西#xff0c;但是并不是没有场景管理#xff0c;而是在cGameHost类中有一课场景树进行场景组织、一棵四叉树用来进行剪裁。 class cGameHost class cGameHos…只是粗略的分析原理大虾轻喷~~ Gaia引擎中没有场景管理器scenemanager这种东西但是并不是没有场景管理而是在cGameHost类中有一课场景树进行场景组织、一棵四叉树用来进行剪裁。 class cGameHost class cGameHost : public CD3DApplication, public cSingletoncGameHost{。。。。。。 cSceneNode m_rootNode;//场景树根节点 cCamera m_defaultCamera; cCamera* m_pActiveCamera; cQuadTree m_quadTree;//四叉树 cRect3d m_worldExtents; tchar m_rootPath[MAX_PATH];bool m_frameReady;// Invalid Functions... cGameHost(const cGameHost Src); cGameHost operator(const cGameHost Src);}; cSceneNode类场景节点可形成树状结构组织场景形成一种空间变换的层次结构。    cSceneObject类渲染基石继承自cSceneNode所有可渲染对象都继承自cSceneObject可挂接在四叉树节点上。 class cSceneObject class cSceneObject : public cSceneNode{ 。。。。。。void attachToQuadTree(cQuadTree* parentTree);//挂接到四叉树 cQuadTreeNode* quadTreeNode()const; u32Flags zMask()const; cSceneObject* forwardTreeLink()const; cSceneObject* rearTreeLink()const;const cRect3d localBounds()const;const cRect3d worldBounds()const;//// temporary functions// void setWorldBounds(const cRect3d box) { m_worldBounds box; }private:// bounding box information u32Flags m_objectFlags; cRect3d m_localBounds; cRect3d m_worldBounds;// world QuadTree membership information cQuadTree* m_pQuadTree; cQuadTreeNode* m_pQuadTreeNode; u32Flags m_quadTreeZMask; cSceneObject* m_pForwardTreeLink; cSceneObject* m_pRearTreeLink;// QuadTree search result links cSceneObject* m_pForwardSearchLink; cSceneObject* m_pRearSearchLink;// private functions void setForwardSearchLink(cSceneObject* pForwardLink);void setRearSearchLink(cSceneObject* pForwardLink);virtual void refreshQuadTreeMembership(); friend cQuadTreeNode;void setQuadTreeData(cQuadTreeNode* parentNode, u32Flags zMask);void setForwardTreeLink(cSceneObject* link);void setRearTreeLink(cSceneObject* link);};   cQuadTree四叉树用于剪裁掉不可见的物体提高渲染效率 class cQuadTree class cQuadTree{public:// Data Types Constants... enum eConstants { k_minimumTreeDepth 1, k_maximumTreeDepth 9, // must be a value between 1 and 9 };// Public Data...// Creators... cQuadTree(); ~cQuadTree();void create(const cRect3d worldExtents, int depth);void destroy();// Operators...// Mutators... cSceneObject* buildSearchResults(const cRect3d worldRect, const cFrustum* pOptionalFrustum0); //四叉树搜索即剪裁可以选用视锥体和包围盒 u32Flags addOrUpdateSceneObject(cSceneObject* newNode);// Accessors... bool isReady()const;private:// Private Data... cQuadTreeNode* m_levelNodes[k_maximumTreeDepth];//四叉树节点2维数组 cVector3 m_worldExtents; cVector3 m_worldScale; cVector3 m_worldOffset;int m_depth; uint32 m_memorySize;// Private Functions... void findTreeNodeInfo(const cQuadTreeRect worldByteRect, int level, int levelX, int levelY); cQuadTreeNode* findTreeNode(const cQuadTreeRect worldByteRect); cQuadTreeNode* getNodeFromLevelXY(int level, int x, int y);void buildByteRect(const cRect3d worldRect, cQuadTreeRect worldByteRect);}; cQuadTreeNode四叉树节点上面可以挂接cSceneObject class cQuadTreeNode class cQuadTreeNode{public: cQuadTreeNode(); ~cQuadTreeNode(); uint32 addOrUpdateMember(cSceneObject* member, const cQuadTreeRect rect);void removeMember(cSceneObject* member);void testLocalMembersForSearchResults( cSceneObject** pResultList, cSceneObject** pResultListTail, u32Flags zMask, float zMin, float zMax,const cFrustum* pOptionalFrustum0);void testLocalMembersForSearchResults( cSceneObject** pResultList, cSceneObject** pResultListTail, u32Flags zMask, const cRect3d trueRect,const cFrustum* pOptionalFrustum0);bool empty()const; u32Flags zMask()const; u32Flags zLocalMask()const;private:// Private Data... cQuadTreeNode* m_pChildNode[4];//子节点 cQuadTreeNode* m_pParentNode; cSceneObject* m_pFirstMember;//挂接的cSceneObject列表 u32Flags m_zLocalMask; u32Flags m_zMask;// Private Functions... void descendantMemberAdded(u32Flags zMask);void descendantMemberRemoved();void rebuildLocalZMask();void rebuildZMask();// functions available to the quad tree friend cQuadTree;void setup(cQuadTreeNode* parent, cQuadTreeNode* child0, cQuadTreeNode* child1, cQuadTreeNode* child2, cQuadTreeNode* child3);//在四叉树上配置节点};    UML: 由于我的uml建模工具貌似不支持自身关联所以树的结构就画不出来了脑补吧。。嘿嘿  总结 gaia的场景管理当中有两棵树 一棵是场景树用来组织场景中物体的空间逻辑关系即子节点依附在父节点上在父节点的坐标系中活动有点像骨骼动画的原理。 一棵是四叉树用于剪裁。gaia中为了简单使用的是满四叉树。这些节点就是上面说过的cQuadTreeNode四叉树节点。 游戏中的cSceneObject根据自身的位置和包围盒大小被放置到这棵四叉树合适的四叉树节点上。需要渲染时根据输入的视锥体或者包围盒遍历整棵树将在包围盒或视锥体中的cSceneObject形成一个列表发送到渲染队列这样就实现了裁剪。转载于:https://www.cnblogs.com/wonderKK/archive/2012/03/07/2382919.html
http://wiki.neutronadmin.com/news/137766/

相关文章:

  • 下载建设银行官方网站下载免费发布信息
  • 百度收录好的网站排名专业开发软件的公司
  • 大连坐做网站公司品牌宣传片策划公司
  • 页游网站网页设计作品集展示
  • 小店网站制作wordpress 云
  • 东莞网站关键词郑州最新消息今天
  • 白鹭引擎做h5网站正规广东网络推广公司
  • 公司网站建设费用怎么记账微信公众平台登录界面
  • 网站建设和维护的教程在线设计 网站源码
  • 东莞房地产网站建设盐城建设网站
  • 营口建设信息网站wordpress图片域名
  • 响应式网站高度如何计算网上购物网站网站建设分析
  • 管理网站模板下载免费百度指数在线查询小程序
  • 标识标牌网站怎么做ppt模板大全app
  • 唯品会 一家专做特卖的网站网页制作作业源代码
  • 哈尔滨做网站找哪家好安徽网络推广和优化
  • 购物网站底部设计微信平台推广方法
  • 免费大型网站廉洁文化建设网站
  • 犀牛云做网站做网站需要多钱免费软件电视剧
  • 广州上市网站建设的公司静态网站挂马
  • win10如何部署自己做的网站跨境电商代运营公司十强
  • 现在用什么cms做网站好重庆建设工程信息网安管监督
  • 智慧团建登录网站入口建设的电影网站总是无法连接
  • 建网站做相亲成华区建设局质检站网站
  • 网站系统优化站建设 app开发网站
  • 做网站公司需要提供的资料wordpress宾馆模板
  • 网站首页如何设计泉州建设工程开标网站
  • 田园综合体建设网站wordpress 不能改邮箱
  • pc蛋蛋游戏体验网站建设海阳seo排名优化培训
  • 如何免费网站建设h5开发入门