自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 资源 (10)
  • 收藏
  • 关注

原创 Ogre1.8.1射线实现碰撞检测例子源代码

#include "ExampleApplication.h" RaySceneQuery* raySceneQuery = 0; // Event handler to add ability to alter curvature class TerrainFrameListener : public ExampleFrameListener { public:

2013-07-05 12:11:37 825

原创 OGRE -- Mesh的使用方法

在OGRE中,动态创建Mesh一般有两种方法:其一,通过ManualObject的ConvertToMesh,创建ManualObject是中间过程,ConvertToMesh过后,此创建的ManualObject就可以Remove掉了;其二,通过HardwareBuffer直接创建Mesh。第一种方法相对来说比较简单(就不多说了),下面具体说说第二种方法:   1. 创建Mesh:MeshP

2013-07-03 12:03:25 1540

转载 Ogre射线精确查询

bool PickEntity(Ogre::RaySceneQuery* mRaySceneQuery, Ogre::Ray &ray, Ogre::Entity **result, Ogre::uint32 mask ,Ogre::Vector3 &hitpoint, bool excludeInVisible,const Ogre::String& excludeobject, Ogre::R

2013-06-28 01:28:01 751

转载 AABB和OBB包围盒简介

一、AABB立方体边界框检测 用球体去近似地代表物体运算量很小,但在游戏中的大多数物体是方的或者长条形的,应该用方盒来代表物体。另一种常见的检测模型是立方体边界框,如图10-31展示了一个AABB检测盒和它里面的物体。 坐标轴平行(Axially-aligned)不仅指盒体与世界坐标轴平行,同时也指盒体的每个面都和一条坐标轴垂直,这样一个基本信息就能减少转换盒体时操作的次数。AABB技术在当今

2013-06-25 00:31:25 1342

转载 OGRE的2D坐标、CEGUI坐标、鼠标坐标、 世界坐标转屏幕坐标

屏幕坐标系:左上角为(0, 0)右下角为(1, 1) OGRE的2D坐标系:左上角为(-1, 1)右下角为(1, -1) CEGUI坐标系:左上角为(0, 0),单位像素   转换公式(鼠标坐标=>OGRE的2D坐标) void setCorners(float left, float top, float right, float bottom) {     left = left

2013-06-20 16:20:37 1169

转载 VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作

一、 环境搭建 1、   软件准备: 所需软件有 OGRE : OgreSDK_vc10_v1-7-4                       CEGUI : CEGUI-0.7.5.zip                                          CEGUI-DEPS-0.7.x-r3-vc10.zip

2013-06-18 01:05:29 885

转载 ogre1.7.x教程中需要修改的地方。

新版本的Ogre(1.7.1)在使用CEGUI的时候发生了一些变化。这样的变化让很多新手(包括我)在阅读非官方中文wiki上的教程时总会遇到代码不能编译通过,很是沮丧。这些教程包括“基础教程六”,“基础教程七”,“中级教程二”,“中级教程三”等等。 1、头文件的引用应改为: #include #include #include #include #include #

2013-06-17 10:08:36 613

c++primer第五版高清中文版.pdf

本下载为一个百度云链接,全书共198M。 c++primer_第五版_高清中文版,c++primer_第五版_高清中文版,c++primer_第五版_高清中文版,重要的事情说3遍。一本C++经典书籍,C++开发者必备的资料。

2016-03-21

美国海军(NPS)的OSG教程

美国海军(NPS)的OSG教程,一份很实用,很全面的OSG教程

2015-09-30

OGRE3D从新手到入门.rar

《OGRE3D从新手到入门》对于初学OGRE的同学挺有帮助的

2013-05-28

《DIRECTX.9.0.3D游戏开发编程基础》例程源代码

《DIRECTX.9.0.3D游戏开发编程基础》龙书书上例程源代码,对于初学者学习DIRECTX编程很有帮助

2013-04-25

OpenGL游戏程序设计(源码)

《OpenGL游戏程序设计》书上的例子源代码,对初学者很有帮助

2013-02-28

Opengl导入Maya模型

在VS2010中,Opengl导入Maya模型,非常适合初学者阅读参考学习。

2013-01-06

win32下多线程例子

win32平台下的多线程例子,非常适合初学者,相信对于刚接触多线程的同学有一定的帮助。

2012-11-12

OpenGL环境配置指南

VC6.0下OPENGL的配置步骤: VS2005下OPENGL的配置步骤: VS2008下OPENGL的配置步骤: .......

2012-10-20

OpenGL教程

1、OpenGL简介   OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,其中比较著名的产品包括动画制作软件Soft Image和3D Studio MAX、仿真软件Open Inventor、VR软件World Tool Kit、CAM软件ProEngineer、GIS软ARC/INFO等等。值得一提的是,随着Microsoft公司在Windows NT和最新的Windows 95中提供了OpenGL标准及OpenGL三维图形加速卡的推出,OpenGL将在微机中有广泛地应用,同时也为广大用户提供了在微机上使用以前只能在高性能图形工作站上运行的各种软件的机会。 2、OpenGL特点及功能   OpenGL实际上是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。它具有七大功能: 建模 OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面(例如Bezier、Nurbs等曲线或曲面)绘制函数。 变换 OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。其变换方法与机器人运动学中的坐标变换方法完全一致,有利于减少算法的运行时间,提高三维图形的显示速度。 颜色模式设置 OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。 光照和材质设置 OpenGL光有辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。 纹理映射(Texture Mapping) 利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。 位图显示和图象增强 图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可是被仿真物更具真实感,增强图形显示的效果。 双缓存动画(Double Buffering) 双缓存即前台缓存和后台缓存,简而言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。此外,利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。从而实现了消隐算法。 3、OpenGL for Windows 95图形库   OpenGL图形库一共有100多个函数。其中核心函数有115个,它们是最基本的函数,其前缀是gl,OpenGL实用库(OpenGL utility library,GLU)的函数功能更高一些,如绘制复杂的曲线曲面、高级坐标变换、多边形分割等,共有43个,前缀为glu;OpenGL辅助库(OpenGL auxiliarylibrary,GLAUX)的函数是一些特殊的函数,包括简单的窗口管理、输入事件处理、某些复杂三维物体绘制等函数,共有31个,前缀为aux。   此外,还有六个WGL函数非常重要,专门用于OpenGL和Windows 95窗口系统的联接,其前缀为wgl,主要用于创建和选择图形操作描述表(renderingcontexts)以及在窗口内任一位置显示字符位图。这些功能是Windows 95对OpenGL的唯一补充。另外,还有五个Win32函数用来处理像素格式(pixel formats)和双缓存。由于它们是对Win32系统的扩展,因此不能应用在其它OpenGL平台上。 4、OpenGL for Windows 95程序设计   OpenGL for Windows 95的设计与OpenGL for UNIX的程序设计有一点小区别,关键就在于如何将OpenGL与不同的操作系统下的窗口系统联系起来。如果调用OpenGL辅助库窗口管理函数,则不用考虑这些问题。下面简要介绍在Windows 95下OpenGL的程序设计关键。   4.1 图形操作描述   在Windows 95下窗口程序必须首先处理设备描述表(Device Contexts,DC),DC包括许多如何在窗口上显示图形的信息,既指定画笔和刷子的颜色,设置绘图模式、调色板、映射模式以及其它图形属性。同样,OpenGL for Windows95的程序也必须使用DC,这与其它Windows 95程序类似。但是,OpenGL for Windows 95必须处理特殊的DC图形操作描述表,这是DC中专为OpenGL使用的一种。一个OpenGL应用图形操作描述表内有OpenGL与Windows 95窗口系统相关的各种信息。一个OpenGL应用首先必须创建一个图形操作描述表,然后再启动它,最后在所定义的窗口内按常规方式调用OpenGL函数绘制图形。   一个图形操作描述表不同于其它DC,它们调用每个GDI函数都需要一个句柄,而图形操作描述表方式下只需一个句柄就可以任意调用OpenGL函数。也就是说,只要当前启用了某个图形操作描述表,那么在未删除图形操作描述表之前可以调用任何OpenGL函数,进行各种操作。   4.2 像素格式   在创建一个图形操作表之前,首先必须设置像素格式。像素格式含有设备绘图界面的属性,这些属性包括绘图界面是用RGBA模式还是颜色表模式,像素缓存是用单缓存还是双缓存,以及颜色位数、深度缓存和模板缓存所用的位数,还有其它一些属性信息。   4.3 像素格式结构   每个OpenGL显示设备都支持一种指定的像素格式。一般用一个名为PIXELFORMATDESCRIPTOR的结构来表示某个特殊的像素格式,这个结构包含26个属性信息。Win32定义PIXELFORMATDESCRIPTOR如下所示:   typedef struct tagPIXELFORMATDESCRIPTOR   {     WORD nSize;     WORD nVersion;     DWORD dwFlags;     BYTE iPixelType;     BYTE cColorBits;     BYTE cRedBits;     BYTE cRedShift;     BYTE cGreenBits;     BYTE cGreenShift;     BYTE cBlueBits;     BYTE cBlueShift;     BYTE cAlphaBits;     BYTE cAlphaShift;     BYTE cAccumBits;     BYTE cAccumRedBits;     BYTE cAccumGreenBits;     BYTE cAccumBlueBits;     BYTE cAccumAlphaBits;     BYTE cDepthBits;     BYTE cStencilBits;     BYTE cAuxBuffers;     BYTE iLayerType;     BYTE bReserved;     DWORD dwLayerMask;     DWORD dwVisibleMask;     DWORD dwDamageMask;   } PIXELFORMATDESCRIPTOR;   4.4 初始化PIXELFORMATDESCRIPTOR结构   PIXELFORMATDESCRIPTOR中每个变量值的具体含义和设置可以参考有关资料,下面举出一个PIXELFORMATDESCRIPTOR初始化例子来简要说明相关变量的意义。定义PIXELFORMATDESCRIPTOR结构的pfd如下:   PIXELFORMATDESCRIPTOR pfd = {     sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd     1,     PFD_DRAW_TO_WINDOW |      // support window     PFD_SUPPORT_OPENGL |      // support OpenGL     PFD_DOUBLEBUFFER,        // double buffered     PFD_TYPE_RGBA,         // RGBA type     24,               // 24-bit color depth     0, 0, 0, 0, 0, 0,        // color bits ignored     0,               // no alpha buffer     0,               // shift bit ignored     0,               // no accumulation buff     0, 0, 0, 0,           // accum bits ignored     32,               // 32-bit z-buffer     0,               // no stencil buffer     0,               // no auxiliary buffer     PFD_MAIN_PLANE,         // main layer     0,               // reserved     0, 0, 0             // layer masks ignored   };   在这个结构里,前两个变量的含义十分明显。第三个变量dwFlags的值是PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,表明应用程序使用OpenGL函数来绘制窗口,第四个表明当前采用RGBA颜色模式,第五个采用24位真彩色,既1.67千万种颜色,如果是256色系统则自动实现颜色抖动;因为没有使用alpha缓存和累计缓存,所以从变量cAlphaBits到cAccumAlphaBits都设置为0;深度缓存设置为32位,这个缓存能解决三维场景的消隐问题;变量cAuxBuffers设置为0,在Windows 95下不支持辅助缓存;Windows 95下针对OpenGL变量ilayerType只能设置为PFD_MAIN_PLANE,但在其它平台也许支持PFD_MAIN_PLANE或PFD_MAIN_UNDERLAYPLANE;接下来bReserved变量只能设为0,而最后三个变量Windows 95都不支持,故全设置为0。   4.5 设置像素结构   当初始化PIXELFORMATDESCRIPTOR结构后,就要设置像素格式。下面举例说明如何设置像素格式。   CClientDC clientDC(this);   int PixelFormat = ChoosePixelFormat(clientDC.m_hDC,&pfd;);   BOOL result=SetPixelFormat(clientDC.m_hDC,PixelFormat,&pfd;);   第一行语句说明得到一个应用窗口客户区的设置描述表。第一行调用ChoosePixelFormat()选择一个像素格式,并将像素格式索引号返回给pixelFormat变量;函数中第一个参数是选择像素格式的设备描述表的句柄,第二个参数是PIXELFORMATDESCRIPTOR结构的地址。如果调用失败则返回0;否则返回像素格式索引号。第三行调用SetPixelFormat()设置像素格式,三个参数分别是设备描述表的句柄、像素格式索引号和PIXELFORMATDESCRIPTOR结构的地址。如果调用成功则返回TRUE,否则返回FALSE。   4.6 创建图形操作描述表   正如前所述,必须创建图形操作描述表并启用它后,才能调用OpenGL函数在窗口内进行各种图形操作。一般来说,利用MFC中增补的管理图形操作描述表方法来编程比较方便。即在视类(CView)的消息OnCreat()中创建图形操作描述表。

2012-10-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除