随笔分类 -  游戏开发

摘要:OgreMain模块特性相关类场景组织体系 Node, SceneNode, SceneManager, Camera, MovableObject Material管理 MaterialManager, Material, Material::TextureLayer 插件动态加载系统Root, DynLibManager, DynLib 数学支持库Math, Vector3, Matrix3, Matrix4, Quaternion 渲染器和几何管道RenderSystem, RenderQueue, Renderable 网格/几何实体管理 MeshManager, Mesh, SubM 阅读全文
posted @ 2010-10-09 17:22 xyecho 阅读(396) 评论(0) 推荐(0)
摘要:OGRE运行期结构江西理工 方声辉 2010年10月7日星期四运行完DEMO之后,注意查看ogrenew\Samples\Common\bin\Debug文件夹中的内容,从这里可以看到OGRE程序的运行环境。除了DEMO的可执行文件外,该文件夹中还包括如下动态链接库:Debug:OgreMain_d.dllIOS_d.dllOgrePlatform_d.dllRenderSystem_Direct3D7_d.dllRenderSystem_Direct3D8_d.dllRenderSystem_SDL_d.dllPlugin_GuiElements_d.dllPlugin_BspSceneMa 阅读全文
posted @ 2010-10-09 17:16 xyecho 阅读(483) 评论(0) 推荐(0)
摘要:OGRE第一个程序江西理工 FangSH 2010年10月9日星期六关于VS2005的搭建。我自己的经验。编译时出现了什么错误就加什么。所以最后所有需要的头文件和库文件如下:包含文件:Samples\Common\includeIncludeOgreMain\includeDependencies\includeDependencies\src\ois-1.2.0\include库文件:lib\debugbin\debuglib\releasebin\releaseDependencise\lib\DebugDependencies\lib\Release当然这之前是要先在VS2005配置好D 阅读全文
posted @ 2010-10-09 17:14 xyecho 阅读(854) 评论(0) 推荐(0)
摘要:VS2005下配置OGRE 江西理工 FangSH 2010/08/20一、下载地址:ogre 1.7.0的下载地址:https://sourceforge.net/projects/ogre/files/ogre/1.7/ogre-v1-7-0.zip/downloadogre 1.7.0依赖库的下载地址http://www.ogre3d.org/forums/viewtopic.php?f=1&t=54533cmake的地址http://www.cmake.org/cmake/resources/software.html二、解压ogre,保存好目录(自己的习惯)我的为D:\SDK 阅读全文
posted @ 2010-08-26 18:18 xyecho 阅读(406) 评论(0) 推荐(0)
摘要:网格二ID3DXBufferID3DXBuffer接口是一种泛型数据结构该接口有两个方法·LPVOIDGetBufferPointer();返回指向缓存中数据起始位置的指针·DWORDGetBufferSize();返回缓存的大小,单位为字节。为了保持该接口的通用性,该接口使用了void类型指针,这就意味着必须由我们来实现被存储的数据类型。例如:D3DXLoadMesh... 阅读全文
posted @ 2010-05-05 19:58 xyecho 阅读(544) 评论(0) 推荐(0)
摘要:外接体第一步在空间d3d中添加类Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->///////外接体///////////struct BoundingBox{BoundingBox(); bool isPointInside(D3DXVECTOR3& p); D3DXVECTOR3 _min;D3DXVECTOR3 _max;}; struct BoundingSphere{BoundingSphere(); D3DXVECTOR3 阅读全文
posted @ 2010-05-05 19:38 xyecho 阅读(944) 评论(1) 推荐(0)
摘要:改变D3D中的渲染状态1). 设置着色模式:SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式2). 设置多边形填充模式:SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT) //点填充模式,D3D在多边形的每个顶点绘制一个像素SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) //线填充模式,D3D在多边形的每个边绘制一条线 阅读全文
posted @ 2010-05-05 10:37 xyecho 阅读(1488) 评论(0) 推荐(0)
摘要:网格(一)几何信息ID3DXBaseMesh接口包含一个顶点缓存(用来存储网格顶点)和一个索引缓存(用来决定顶点怎样构成网格的三角形单元)。HRESULT ID3DXMesh::GetVertexBuffer(LPDIRECT3DVERTEXBUFFER9* ppVB);HRESULT ID3DXMesh::GetIndexBuffer(LPDIRECT3DINDEXBUFFER9* ppIB);例子:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- 阅读全文
posted @ 2010-05-03 11:15 xyecho 阅读(1118) 评论(0) 推荐(0)
摘要:基本变换平移矩阵(translation matrix)用于创建平移矩阵的D3DX函数Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->D3DXMATIX *D3DXMatrixTranslation ( D3DXMATRIX * pOut, //result FLOAT x, //Number of units to translate on x-axis FLOAT y, //Number of units to translate on 阅读全文
posted @ 2010-04-17 17:40 xyecho 阅读(525) 评论(0) 推荐(0)
摘要:字体ID3DXFont 接口创建一个ID3DXFont接口对象HRESULTD3DXCreateFontIndirect(LPDIRECT3DDEVICE9pDevice, //device to associanted with the fontCONST LOGFONT*pLogFont, //D3DXFONT_DESC structrure, describing //the fontLPD3DXFONT*ppFont //return the created font);对要创建的字体进行描述, 必须先填充D3DXFONT_DESC结构。函数使用演示Code highlighting 阅读全文
posted @ 2010-04-16 19:25 xyecho 阅读(702) 评论(0) 推荐(0)
摘要:融合技术该技术能使我们将当前要进行光栅化的像素的颜色与先前已光栅化并处于同一位置的像素的颜色进行合成.主要是透明效果。融合处理的步骤:1 设置融合因子D3DRS_SRCBLEND和D3DRS_DESTBLEND。2 如果使用Alpha分量,还需指定其来源(材质或Alpha通道)。3 启用Alpha融合绘制状态。融合方程OutputPixel=SourcePixel*SourceBlendFactor+DestPixel*DestBlendFactor融合后的颜色=源像素颜色*源整合因子+后台缓存像素颜色*目标融合因子.·SorcePixel 当前计算得到的、用于与后台缓存中对应像素进 阅读全文
posted @ 2010-04-14 20:49 xyecho 阅读(495) 评论(0) 推荐(0)
摘要:纹理映射在DirectX中,纹理用接口IDirect3DTexture9来表示。纹理是类似于表面的一个像素矩阵,与表面不同的是它可被映射到三角开单元中。Direct3D所使用的纹理 坐标第由沿水平方向的和垂直方向构成的(u,v)用坐标对标识的纹理元素为纹理元。Direct3D 将纹理坐标做了规范化处理使这限定于[0,1].修改顶点结构Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->struct Vertex{flaot _x, _y, _z; 阅读全文
posted @ 2010-04-13 15:38 xyecho 阅读(664) 评论(0) 推荐(0)
摘要:光照光照的组成光源发出的的光由以下3个分量3种类型的光组成。·环境光(Ambient Lingth) 光经其他表面反射到达物体表面 并照亮整个场景。如 物体的某些部分一定程度地照亮,但物体并没有处于光照的直接照射下,而是由于其他物体对光的反射。·漫射光(Diffuse Lingth) 光沿着特定的方向传播,当它到达某一表面时, 将沿着各个方向均匀反射。无须考虑观察者的位置。·镜面光(Speculat Light) 光没特定方向传播。 当光到达一个表面时, 将严格地沿着上别一个方向反射,从而形成只能在一定角度范围内才能观察到的高亮度照射。在镜面光照议程中要考虑光线的 阅读全文
posted @ 2010-04-10 14:24 xyecho 阅读(470) 评论(0) 推荐(0)
摘要:颜色颜色表示颜色用RGB三元组表示。为红色(red)绿色(Green)蓝色(Blue)。RGB数据可用两种不同的结构来保存。1 D3DCOLOR结构 与DWORD类型完全相同。共有32位。各位被 分成四个8位项(section)每项存储一种分量的亮度量。第个分量的亮度值范围都在[0, 255]区间内。2 D3DCOLORVALUE 结构 有单精度浮点数据试题每个量的亮度值, 亮度值的取范围为[0, 1] (0表示没有亮度, 1表示亮度最大)可用结构D3DXCOLOR替代D3DCOLORVALUE, 前者包含了后者的数据成员 还提供了一组有用的构造函数和重载去运算符。顶点颜色图元的由构成该图元的 阅读全文
posted @ 2010-04-09 13:02 xyecho 阅读(252) 评论(0) 推荐(0)
摘要:顶点格式索引原理 视口矩阵 投影矩阵顶点格式 自定义两种顶点格式struct ColorVertex{float _x, _y, _z; //位置DWORD _color; //颜色};struct NormalTecVertex {float _x, -y, _z; //位置float _nx, _ny, _nz; //顶点法线float _u, _v; //纹理坐标};顶点结构定义好之后 需要用灵活顶点格式(Flexible Vertex Format,FVF)期望的组合来描述顶点的组织结构。#define FVF_COLOR (D3DFVF_XYZ | D3DFVF_DIFFUSE)对应 阅读全文
posted @ 2010-04-08 15:40 xyecho 阅读(786) 评论(0) 推荐(0)
摘要:顶点缓存与索引缓存创建顶点缓存和索引缓存HRESULTIDirect3DIndexBuffer9:: CreateVertexBuffer(UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer9 ** ppVertexBuffer,HANDLE * pHandle);HRESULTIDirect3DIndexBuffer9:: CreateVertexBuffer(UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer9 **pp 阅读全文
posted @ 2010-04-07 14:36 xyecho 阅读(1642) 评论(0) 推荐(0)
摘要:Direct3D 的初始化分解为如下步骤:1 获取接口 IDrirect3D8的指针。2 检查设备性能(D3DCAPS9), 判断主显(primaty display adapter or primaty graphics card)卡是否支持硬件顶点运算.3 初始化 D3DPRESENT PARAMETERS 结构的一个实例。4 利用已初始化的D3DPRESENT PARAMETER 结构创建IDirect3DDevice9对象(一个C++对象)。获取接口IDirect3D9的指针要初始化IDirect3D,首先必须获取指向接口IDirect3D9的指针。 如下:IDirect3D9 *_d 阅读全文
posted @ 2010-04-06 22:24 xyecho 阅读(1139) 评论(0) 推荐(1)
摘要:表面表面是Direct3D主要用于存储2D图像数据的一个像素矩阵。表面的宽度(width)和高度(height)都用像素来度量。跨度(pitch)则用字节来度量。具体地说, 跨度可能会比宽度更“宽”。在代码中, IDirect3DSurface9 来描述表面。该接口提供了几种直接从表面读取和写入数据的方法, 以及一种获取表相关信息的方法。 接口IDirect3DSurfac... 阅读全文
posted @ 2010-04-06 22:20 xyecho 阅读(595) 评论(0) 推荐(1)
摘要:双缓冲技术在离屏缓冲绘制图像,然后将其拷贝到显示表面的处理过程被称作双缓冲技术。实现:额外的一块同主DirectDraw表面具有同样尺寸的内存。并在这块内存上画每一帧动画之后拷贝双内在到主显示表面。如:申请640X480X8的内存UCHAR *double_buffer = (UCHAR *) malloc (640*480);或者UCHAR *double_buffer = new UCHAR[640*480];实现:让后备缓冲显示出来,可以把后备缓冲拷贝到主显示页面代码如下:Code highlighting produced by Actipro CodeHighlighter (fre 阅读全文
posted @ 2010-03-30 14:48 xyecho 阅读(971) 评论(0) 推荐(0)
摘要:DirextX—ddsd.lpitch是什么? lpitch是结构体DDSURFACEDESC2的一项,这个结构体描述了页面/表面的一些信息。 lpitch一般译做步幅(stride)或内存宽度(memory width)。注意,它与DDSURFACEDESC2结构体中的另一项dwWidth的意义是不一样的。 lpitch的单位是字节,dwWidth的单位是像素。所以,一个640×480×8(640×480个像素,每像素用8位,即一个字节表示)页面,dwWidth=640 像素(字节)。但是,此时Lpitch不一定就等于640(字节)!同样一个640×4 阅读全文
posted @ 2010-03-30 14:44 xyecho 阅读(864) 评论(0) 推荐(0)