上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: 资源管理 可管理的资源有: 材质资源:在.material文件中包含的材质脚本定义(技术、通路、纹理单元等数据的定义)。 模型资源:经过优化的二进制网格模型文件,扩展名为.mesh。包含几何信息和一些动画数据。 骨骼资源:经过优化的二进制骨骼文件,扩展名为.skeleton。包含骨骼动的数据以及相应帧动画的信息。 字体资源:字体的配置信息,扩展名为.fontdef的文件,其中包括TrueType字体的引用以及其他字体配置数据。 GPU程序资源:在.program中对GPU程序的声明信息,与材质脚本.material文件有类似的结构,但Ogre保证所有.program文件都会在处理材... 阅读全文
posted @ 2013-09-03 10:40 struggle_time 阅读(1231) 评论(0) 推荐(0) 编辑
摘要: 接着上篇写http://www.cnblogs.com/songliquan/p/3294902.html 旋转这里有必要看一下关于旋转的源代码: virtual void pitch(const Radian& angle, TransformSpace relativeTo = TS_LOCAL); virtual void yaw(const Radian& angle, TransformSpace relativeTo = TS_LOCAL); virtual void roll(const Radian& angle, TransformSpace rela 阅读全文
posted @ 2013-09-02 17:03 struggle_time 阅读(3608) 评论(0) 推荐(1) 编辑
摘要: SDK安装以及编译1、下载SDK,地址如下 http://www.ogre3d.org/download/sdk2、安装SDK,直接解压到相应目录,如D:/ogreSDK3、我用的是1.8版本,打开SDK安装目录,如图: D:\Program Files\OgreSDK_vc10_v1-8-1 用VS2010打开ogre.sln对其进行生成解决方案,过程有点慢,如果没有出问题,那就可以进行下一步了。 4、打开D:\Program Files\OgreSDK_vc10_v1-8-1\bin\debug下面的SampleBrowser_d.exe,就可以进入Sample 创建项目并... 阅读全文
posted @ 2013-09-02 09:48 struggle_time 阅读(3640) 评论(0) 推荐(0) 编辑
摘要: 物体着色的基础 --- 四种不同光照作用 1、环境反射 近似的模拟了场景中的全局辐射,也就是用来近似模拟所有光在场景中不断散射的结果。材质中有相应的属性来代表这种环境反射颜色。 2、漫反射 这种颜色是接收到直接从光源发射的光之后产生的,“漫反射”和现实中的意思一样,就是描述光被物体反射到多个方向的效果。 3、放射 指的是自发光物体所拥有的颜色。具体意思就是放射光只能照亮自己却不能对周围任何物体产生影响。这种光很奇怪的,现实中没有的。 4、镜面反射 描述了物体对被光照后的“高光”效果。这个也比较抽象。纹理贴图(Texture Mapping) 可以用程序把纹理通过一个独立的坐标... 阅读全文
posted @ 2013-09-01 18:01 struggle_time 阅读(1488) 评论(0) 推荐(0) 编辑
摘要: 场景管理器的使用 最常使用的坐标系统空间(同时也是Ogre程序所能提供的)即是世界空间(World)、父节点空间(Parent)以及本地空间(Local)。1、世界空间 就是物体所存在的地方,当我们把一个模型放进世界模型里面去,那么它就有了一个世界坐标,这个世界坐标是用来标记世界中不同的模型所处的位置的。在世界空间里,世界的中心就是远点(0,0,0)。而在ogre中,这个也相当于场景根节点的位置,所以世界空间在ogre中也可以理解为“相对于场景根节点”。世界空间也意味着用全局的X,Y,Z坐标。 父节点空间变换是相对于一个节点的父节点,也就是把父节点的坐标作为变换空间的矩阵原点。本地空间变... 阅读全文
posted @ 2013-08-31 23:11 struggle_time 阅读(1629) 评论(0) 推荐(2) 编辑
摘要: ogre的使用方法1---自动设置1、ogre初始化:首先实例化一个Root对象1 Root * root = new Root();2 Root * root = new Root("plugins.cfg"); 3 Root * root = new Root("plugins.cfg", "ogre.cfg");4 Root * root = new Root("plugins.cfg", "ogre.cfg", "ogre.log");//系统默认这样,当你没有填写参 阅读全文
posted @ 2013-08-30 17:27 struggle_time 阅读(1868) 评论(0) 推荐(2) 编辑
摘要: 五、阴影 阴影是渲染一个真实场景的重要组成部分,它可以给场景中的物体提供更加真实的感觉,同时还可以帮助用户更好的了解对象间的空间关系。 启用阴影: 缺省情况下,阴影是关闭的,开启方式如下: 1、建立场景时就设置阴影技术有效 --mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); 2、创建一个或者多个光源 3、关闭那些不需要投射阴影的物体,可以用物体的aetCastShadows(false)来实现。 4、设置投影的最远距离,通过SceneManager::setShadowFarDistance来限制投影的最远距... 阅读全文
posted @ 2013-08-30 13:49 struggle_time 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 三、网格工具(Mesh) 1、导出器(Exporters)---用于从模型生成器中得到数据并且导入到OGRE中去。 导出器是指通过3D模型工具的插件写成网格数据和骨骼动画的文件格式可以在OGRE中被实时渲染(这句话读着太吃力了)。这些文件被导出器以.mesh和.skeleton形式生成。 2、XML转换器(XmlConverter)---用于从XML转换网格数据和骨骼数据 。 格式:OgreXMLConverter sourcefile [destfile] 3、网格数据更新器(MeshUpgrader)---用于从OGRE其中之一的版本更新二进制网格数据到其他的版本中。 格式:O... 阅读全文
posted @ 2013-08-30 10:09 struggle_time 阅读(1150) 评论(0) 推荐(1) 编辑
摘要: 9、粒子脚本 粒子脚本允许你实例化地在你的脚本代码中定义粒子系统,而不必在源代码中进行设置,使得你做任何修改都能得到快速回应。脚本里定义的粒子系统被用作模板,并且多个实际的系统可以在运行时从这里被创建。 粒子系统属性: quota ---设置这个系统在某一时刻所允许包含的最多粒子数。 格式: quota material ----设置这个系统中的全体粒子将要使用的材质的名字。 格式: material particle_width ---在世界坐标中,设置粒子的宽度。 格式: particle_width particle_height ---在世界坐标中... 阅读全文
posted @ 2013-08-29 17:55 struggle_time 阅读(925) 评论(0) 推荐(0) 编辑
摘要: 三、顶点程序与片断程序 顶点或者片断程序定义可以被多个材质使用,唯一的前提条件是必须在引用它之前在材质的渲染通路部分中定义。 一个低级顶点程序示例如下:1 vertex_program myVertexProgram asm2 {3 source myVertexProgram.asm //资源4 syntax vs_1_1 //语法规则5 } 定义一个片断程序,与此相同,只是将vertex_program换成fragment_program。 默认的程序参数 ---定义默认参数可以避免重复绑定公用的参数vertex_program Og... 阅读全文
posted @ 2013-08-29 17:27 struggle_time 阅读(794) 评论(0) 推荐(0) 编辑
摘要: 一、核心对象介绍1、命名空间 Ogre3d使用了C++的特性--命名空间,可以防止命名混淆。使用方法也简单,using namespace Ogre;或者直接在使用时加上“Ogre::”的前缀,如Ogre::Vector3等。2、Root对象 ---根对象 根(Root)对象是OGRE系统的入口,该对象在程序一开始时创建,最后结束时销毁。可用来配置系统,还可以获得系统中其他对象的指针,比如场景管理器(SceneManager),绘制系统(RenderSystem),资源管理器(Resource Managers)等。3、RenderSystem 对象----渲染系统对象 渲染系统对象实际... 阅读全文
posted @ 2013-08-29 14:50 struggle_time 阅读(1653) 评论(1) 推荐(0) 编辑
摘要: 第八章Document-View 深入探讨(总结) 1、Document Document 在MFC 的CDocument 里头被具体化。CDocument 本身并无任何具体数据,它只是提供一个空壳。当你开发自己的程序,应该从CDocument 衍生出一个属于自己的Document 类别,并且在类别中声明一些成员变量,用以承载(容纳)数据。然后再(至少)改写专门负责文件读写动作的Serialize 函数。应为他派生至CObject,所有它有CObject 所支持的一切性质,包括执行时期型别信息(RTTI)、动态生成(Dynamic Creation)、文件读写(Serialization).. 阅读全文
posted @ 2013-08-28 23:30 struggle_time 阅读(1011) 评论(3) 推荐(1) 编辑
摘要: 第六章 MFC程序的生死因果 MFC学习过程,这个方法不错,条例清晰。 1、CWinApp -- 取代WinMain地位 WinMain函数的功能由CWinApp的三个函数实现1 virtual BOOL InitApplication();2 virtual BOOL InitInstance();3 virtual int Run(); 在CWinThread类中定义m_pMainWnd CWnd* m_pMainWnd; // 记录主窗口的句柄 2、CFrameWnd --- 取代WndProc的地位 通过消息映射来实现消息与函数的关联,宏DECLARE_MES... 阅读全文
posted @ 2013-08-27 13:07 struggle_time 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 第七章MFC骨干程序 所谓骨干程序就是指有AppWizard生成的MFC程序。如下图的层次关系是程序中常用的几个类,一定要熟记于心。 1Document/View应用程序 CDocument存放资料内容,CView显示资料,并且负责最资料的编辑、修改。 有关文件读写的动作在CDocument 的Serialize 函数进行,有关画面显示的动作在CView 的OnDraw 或OnPaint 函数进行。 程序每打开一份文件(资料),就应该产生三份对象: 1. 一份Document 对象, 2. 一份View 对象, 3. 一份CMDIChildWnd 对象(做为外框... 阅读全文
posted @ 2013-08-27 09:25 struggle_time 阅读(914) 评论(0) 推荐(0) 编辑
摘要: 最近看侯捷的MFC深入浅出,简单总结一下。第一章首先就是先了解一下windows程序设计的基础知识,包括win32程序开发基础,什么*.lib,*.h,*.cpp的,程序入口点WinMain函数,窗口注册,消息循环,消息映射等。还有控制台(console)应用程序的运行过程以及与MFC的区别,进程与... 阅读全文
posted @ 2013-08-26 10:52 struggle_time 阅读(1578) 评论(10) 推荐(3) 编辑
上一页 1 ··· 9 10 11 12 13 14 下一页