OGRE小记
摘要:1,entity是没有getPosition的2,node的默认position是原点3,材质脚本中定义的程序段中的source文件名后缀必须与定义的shader文件类型匹配。如:vertex_program Ogre/CelShadingVP1hlsl{ source Example_CelShading1.hlsl entry_point main_vp targetvs_2_0}注意target是hlsl中独占,cg中是profile,且参数不同4,Plugin_CgProgramManager_d.dll 插件一定要有cg.dll配合5,OGRE不支持的中文路径用下面解决:setloc
阅读全文
posted @
2011-02-24 17:03
minggoddess
阅读(408)
推荐(0)
天龙客户端大致的结构划分和功能描述
摘要:天龙客户端大致的结构划分和功能描述说明UI系统 CEGUI UI基础系统 CEGUI渲染器 Expat XML解析器 CEGUI依赖,估计编写者不喜欢用 FreeType2 跨平台、开源的字体渲染器 用于绘制中文脚本 luaPlus3D显示引擎 Ogre 开源的高效渲染引擎 使用OGRE确实是很高的一步棋碰撞检测 Opcode 开源,占用内存少 我们可考虑用bullet,ODE,或其他(按实际要求)TinyXML XML的解析工具 游戏中使用的XML解析器,Code们熟悉的Music&Sound Effect FMOD SDK即可struct定义结构全部大写?WX编写系统 WXClie
阅读全文
posted @
2011-02-24 17:00
minggoddess
阅读(707)
推荐(0)
ogre Mesh的渲染流程
摘要:首先一个Entity对象必须Attach到一个SceneNode。1.创建一个SceneNode:SceneManager::getRootSceneNode()(在SceneManager::init时会创建一个RootNode)àSceneNode::createChildSceneNode()àNode::createChild()主要的操作在这个函数中完成,首先调用虚函数SceneNode::createChildImpl(),此函数又会调用OctreeSceneManager::createSceneNode(),此函数会new一个SceneNode的派生类对象,
阅读全文
posted @
2011-02-24 16:58
minggoddess
阅读(816)
推荐(0)
Mesh的加载
摘要:如果新开始写一个3D渲染引擎,Mesh应该是一个很好的切入点。当一个看似简单的Mesh渲染到窗口时,说明引擎的架构已经确定,并验证了。想了解Ogre内部的机制,可以先看看Mesh的加载过程,这里主要涉及到Resource是如何管理的,Material是怎样处理的,Resource和HardwareBuffer是如何关联的。对于前面教程代码的执行过程做一下分析:创建一个Entity(加载Mesh及其相关的Material)的调用流程如下:SceneManager::createEntity()->SceneManager::createMovableObject()->Movable
阅读全文
posted @
2011-02-24 16:58
minggoddess
阅读(370)
推荐(0)
ogre 脚本 载入 序列化
摘要:()找到类名去google搜就能得到类关系图了 不用在ogre里扒拉着找了meshSerializer 功能分析AllocatedObject : new deletSerializer: 这里有对二进制文件的处理 This class provides a number of useful methods for exporting / importing data from stream-oriented binary files (e.g. .mesh and .skeleton). */ class _OgreExport Serializer : public SerializerA
阅读全文
posted @
2011-02-24 16:31
minggoddess
阅读(738)
推荐(0)
ogre 中文路径
摘要:ogre里似乎不支持中文路径cfg被默认设置成我的文档 因为这几个字是汉字mConfigFileName里面就乱了samplebrower里面是 samplecontext里的 createroot () root()的第二个参数这些路径都存在FileSystemLayer的类里 里面有个mHomePathFileSystemLayer这个类是个接口 具体由FileSystemLayer_win32实现
阅读全文
posted @
2011-02-22 16:09
minggoddess
阅读(332)
推荐(0)
Ogre设计模式分析-观察者模式
摘要:观察者模式是游戏开发中十分常用的模式,Ogre也大量运用了此模式来监听,比如FrameListener.ResourceListener这种方式比常见的回调函数更好用,因为观察者模式是基于接口的,任何类只要继承这个接口,注册后就可以监听我们需要观察的对象。不想监听,取消注册就行了,具体实现原理,我们以为FrameListener为例子,然后再举一反三在自己的游戏中使用它,比如场景编辑器,我拖动了一个entity,改变了他的位置,那么显示对象属性的控件应该更新这个对象的位置,我们就可以设计一个监听类来监听任何对对象的操作,有变化就通知给显示面板。Ogre的帧监听怎么实现的呢1,先设计了一个基类,
阅读全文
posted @
2011-02-21 09:48
minggoddess
阅读(770)
推荐(0)
Scaleform Gfx的Demo
摘要:新建一个Demo工程时,编译之前有一些VS的配置是必须的,在Debug和Release下,工程必须包括:$(GFXSDK)\Src\GRenderer$(GFXSDK)\Src\GKernel$(GFXSDK)\Src\GFxXML$(GFXSDK)\Include这里$(GFXSDK)环境变量指的就是你安装Gfx的位置,其实如果你能够有Gfx中的Lib何Include文件夹得话,你吧他们放到工程目录下,你就可以使用相对路径来指定这些路径,就不必为每个开发人员安装Gfx了。至于库文件,就是一些核心的内容,这部分是不会提供源码,所以我们也必须包含这些库文件来提供给应用程序。$(DXSDK_DIR
阅读全文
posted @
2011-02-19 16:28
minggoddess
阅读(2414)
推荐(1)
在Ogre中加载自己的资源包
摘要:由于数据保护的需要,一款游戏一般都会有自己独有的资源包,这样做既有利于知识产权的保护,又减少了磁盘碎片的产生。Ogre本身是支持的Zip包的,但Zip包不具要资源保护的特性,随便用个winrar就可以把资源打开并导出,这样就失去了数据保护的意义。现在假设你的操作资源包的API已经完成,下一步需要集成到OGRE中去,那么该怎么做呢,大致我机械式的列出下面几步,照着做一般就不会错。1. 继承Ogre::Archive 派生出新的,假设派生出 Ogre::XXXArchive2. Ogre::XXXArchive 中实现下面的虚函数bool isCaseSensitive(void)void loa
阅读全文
posted @
2011-02-19 13:14
minggoddess
阅读(1230)
推荐(0)
ActionButton的处理流程 天龙packet
摘要:什么破博客,,,崩溃了就要重写也不带自动保存参考http://blog.csdn.net/butwang/archive/2011/02/15/6185631.aspx[代码]通过PlayerPackage:EnumItem的第二个参数 i-1获得index 在map里查表 得到second为这部分的理解见之前luaplus的帖子[代码]NAMETYPE_PACKAGEITEM); if(pActionItem) { LuaObject objReturn = state->BoxPointer(pActionItem); objReturn.SetMetaTable(*CActionI
阅读全文
posted @
2011-02-15 18:14
minggoddess
阅读(994)
推荐(0)
【转】让Ogre支持中文路径与中文文件名
摘要:Ogre中路径与文件名不支持中文,这是VS2005之后版本的std::fstream对中文路径处理不正确的原因,所以加载中文路径或文件名不成功,解决办法: 在主函数开始加入 setlocale(LC_ALL,"Chinese-simplified");例如:view plaincopy to clipboardprint?virtual void createScene(void){ setlocale(LC_ALL,"Chinese-simplified"); Entity* ogreHead = mSceneMgr->createEnt
阅读全文
posted @
2011-02-12 11:18
minggoddess
阅读(566)
推荐(0)
ogre visibleflag
摘要:[代码](as seen in setVisible), you can also set visiblity flags which when 'and'edwith the SceneManager's visibility mask can also make an object invisible. */ virtual void setVisibilityFlags(uint32 flags) { mVisibilityFlags = flags; }
阅读全文
posted @
2011-02-11 16:31
minggoddess
阅读(282)
推荐(0)