08 2013 档案
摘要:场景管理器的使用 最常使用的坐标系统空间(同时也是Ogre程序所能提供的)即是世界空间(World)、父节点空间(Parent)以及本地空间(Local)。1、世界空间 就是物体所存在的地方,当我们把一个模型放进世界模型里面去,那么它就有了一个世界坐标,这个世界坐标是用来标记世界中不同的模型所处的位置的。在世界空间里,世界的中心就是远点(0,0,0)。而在ogre中,这个也相当于场景根节点的位置,所以世界空间在ogre中也可以理解为“相对于场景根节点”。世界空间也意味着用全局的X,Y,Z坐标。 父节点空间变换是相对于一个节点的父节点,也就是把父节点的坐标作为变换空间的矩阵原点。本地空间变...
阅读全文
摘要: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");//系统默认这样,当你没有填写参
阅读全文
摘要:五、阴影 阴影是渲染一个真实场景的重要组成部分,它可以给场景中的物体提供更加真实的感觉,同时还可以帮助用户更好的了解对象间的空间关系。 启用阴影: 缺省情况下,阴影是关闭的,开启方式如下: 1、建立场景时就设置阴影技术有效 --mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); 2、创建一个或者多个光源 3、关闭那些不需要投射阴影的物体,可以用物体的aetCastShadows(false)来实现。 4、设置投影的最远距离,通过SceneManager::setShadowFarDistance来限制投影的最远距...
阅读全文
摘要:三、网格工具(Mesh) 1、导出器(Exporters)---用于从模型生成器中得到数据并且导入到OGRE中去。 导出器是指通过3D模型工具的插件写成网格数据和骨骼动画的文件格式可以在OGRE中被实时渲染(这句话读着太吃力了)。这些文件被导出器以.mesh和.skeleton形式生成。 2、XML转换器(XmlConverter)---用于从XML转换网格数据和骨骼数据 。 格式:OgreXMLConverter sourcefile [destfile] 3、网格数据更新器(MeshUpgrader)---用于从OGRE其中之一的版本更新二进制网格数据到其他的版本中。 格式:O...
阅读全文
摘要:9、粒子脚本 粒子脚本允许你实例化地在你的脚本代码中定义粒子系统,而不必在源代码中进行设置,使得你做任何修改都能得到快速回应。脚本里定义的粒子系统被用作模板,并且多个实际的系统可以在运行时从这里被创建。 粒子系统属性: quota ---设置这个系统在某一时刻所允许包含的最多粒子数。 格式: quota material ----设置这个系统中的全体粒子将要使用的材质的名字。 格式: material particle_width ---在世界坐标中,设置粒子的宽度。 格式: particle_width particle_height ---在世界坐标中...
阅读全文
摘要:三、顶点程序与片断程序 顶点或者片断程序定义可以被多个材质使用,唯一的前提条件是必须在引用它之前在材质的渲染通路部分中定义。 一个低级顶点程序示例如下:1 vertex_program myVertexProgram asm2 {3 source myVertexProgram.asm //资源4 syntax vs_1_1 //语法规则5 } 定义一个片断程序,与此相同,只是将vertex_program换成fragment_program。 默认的程序参数 ---定义默认参数可以避免重复绑定公用的参数vertex_program Og...
阅读全文
摘要:一、核心对象介绍1、命名空间 Ogre3d使用了C++的特性--命名空间,可以防止命名混淆。使用方法也简单,using namespace Ogre;或者直接在使用时加上“Ogre::”的前缀,如Ogre::Vector3等。2、Root对象 ---根对象 根(Root)对象是OGRE系统的入口,该对象在程序一开始时创建,最后结束时销毁。可用来配置系统,还可以获得系统中其他对象的指针,比如场景管理器(SceneManager),绘制系统(RenderSystem),资源管理器(Resource Managers)等。3、RenderSystem 对象----渲染系统对象 渲染系统对象实际...
阅读全文
摘要:第八章Document-View 深入探讨(总结) 1、Document Document 在MFC 的CDocument 里头被具体化。CDocument 本身并无任何具体数据,它只是提供一个空壳。当你开发自己的程序,应该从CDocument 衍生出一个属于自己的Document 类别,并且在类别中声明一些成员变量,用以承载(容纳)数据。然后再(至少)改写专门负责文件读写动作的Serialize 函数。应为他派生至CObject,所有它有CObject 所支持的一切性质,包括执行时期型别信息(RTTI)、动态生成(Dynamic Creation)、文件读写(Serialization)..
阅读全文
摘要:第六章 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...
阅读全文
摘要:第七章MFC骨干程序 所谓骨干程序就是指有AppWizard生成的MFC程序。如下图的层次关系是程序中常用的几个类,一定要熟记于心。 1Document/View应用程序 CDocument存放资料内容,CView显示资料,并且负责最资料的编辑、修改。 有关文件读写的动作在CDocument 的Serialize 函数进行,有关画面显示的动作在CView 的OnDraw 或OnPaint 函数进行。 程序每打开一份文件(资料),就应该产生三份对象: 1. 一份Document 对象, 2. 一份View 对象, 3. 一份CMDIChildWnd 对象(做为外框...
阅读全文
摘要:最近看侯捷的MFC深入浅出,简单总结一下。第一章首先就是先了解一下windows程序设计的基础知识,包括win32程序开发基础,什么*.lib,*.h,*.cpp的,程序入口点WinMain函数,窗口注册,消息循环,消息映射等。还有控制台(console)应用程序的运行过程以及与MFC的区别,进程与...
阅读全文
摘要:给对话框添加背景只需在OnPaint()函数里添加以下代码就可以实现 1 /*************添加对话框背景图片**************************************************************************/ 2 /*获取设备当前大小*/ 3 CPaintDC dc(this); 4 CRect rc; 5 GetClientRect(&rc); ...
阅读全文
摘要:绝对路径很简单,但是隐患比较大,如果程序位置有变动,就会出现找不到文件的问题。使用起来也比较简单。如CString strPath = L"";strPath += "d:\\work\\1.avi";//这就是绝对路径相对路径使用起来最方便,不用担心程序的位置变化引起的故障。从IDE环境运行程序的时候,默认当前路径是工程项目所在路径,也就是dsp文件,sln文件所在路径。 //读取配置文件 CString strflash,strVideo; CString des = L""; ::GetCurrentDirectory(_MAX
阅读全文
摘要:一、线程的创建HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); 该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下: ...
阅读全文
摘要:1.首先确认已安装过相关工具及配置环境,然后打开vs2010,新建一对话框应用程序 取名为Player_test1,然后打开菜单-》项目-》属性-》 添加strmmiids.lib库文件,然后在头文件里包含“dshow.h”头文件。 2. 在头文件里添加public成员变量 ,在构造函数里初始化为N
阅读全文
摘要:两个对话框之间的通信,可以用非模态对话框来实现首先新增一对话框,id为IDD_DIALOG2然后可添加一Edit Control 控件用于显示接受的数据,给对话框添加类,并把头文件包含到Dialog1里面。声明一对话框指针CTestDialog *m_pTest;并在构造函数里初始化为空m_pTest = NULL;在Dialog1中添加一按钮,用于打开Dialog2 1 void CEdit_TestDlg::OnBnClickedButton1() 2 { 3 // TODO: 在此添加控件通知处理程序代码 4 CString str =L""; 5 str += ..
阅读全文