随笔分类 -  Direct3D

摘要:微软D3D设备能创建和操纵下面初基类型:l点列表l线列表l线带l三角形列表l三角形带l三角形扇区你能用IDirect3DDevice9接口中的任何粉刷方法在C++程序中粉刷原基。1.1.1.1.点列表一个点列表是一个顶点的集合,这些顶点被作为单独的点来粉刷。你的程序可以在3-D场景中用它们作为在多边形表面上开始字段、点线。下图描述了一个粉刷后的点列表。你的程序能在一个点列表上应用素材和纹理,素材或纹理的颜色仅仅出现在点上,而不是在点之间的任何地方。下面的代码显示怎么样为顶点创建点列表:struct CUSTOMVERTEX{float x,y,z;};CUSTOMVERTEX Vertices 阅读全文
posted @ 2011-11-07 22:04 ☆A希亿 阅读(360) 评论(0) 推荐(0) 编辑
摘要:前言:本教程面向对DriectX 9.0有一定了解的读者,主要讲解DirectX 9.0的各个部分的功能及用法。希望对广大的游戏初学者有一定帮助,也好让本人对中国游戏事业的发展做出一些微不足道的贡献。作者:Fabric(由于本人是广东人,写文章难免参杂粤语写法,请见谅) 简介:ID3DXSprite是DriectX 9.0里面的一个简单模块,在DriectX 9.0帮助文档里面对其功能的描术为:“向用户提供一套简单的在屏幕上实现精灵渲染的接口。”何为精灵渲染,说白了就是渲染2D画面,ID3DXSprite帮助用户透过简单的操作就能运用DriectX 9.0制作2D游戏(渲染2D图形),ID3. 阅读全文
posted @ 2011-11-07 22:02 ☆A希亿 阅读(879) 评论(0) 推荐(0) 编辑
摘要:alpha混合原理在前面介绍的示例程序中,绘制图形的颜色总是替换当前颜色缓冲区中存在的颜色,这样后面的物体总是覆盖在原有的物体上。但是当想要绘制类似于玻璃、水等具有透明效果的物体时,这种方法显然满足不了要求。通过定义一个表示物体半透明度的alpha值和一个半透明计算公式,可以将要绘制的物体颜色与颜色缓冲区中存在的颜色相混合,从而绘制出具有半透明效果的物体。Direct3D计算alpha颜色混合的方法如下:color = (RGBsrc* Ksrc) OP (RGBdst* Kdst)其中color表示alpha混合后的颜色值,RGBsrc表示源颜色值,即将要绘制的图元的颜色值;Ksrc表示源混 阅读全文
posted @ 2011-11-07 22:01 ☆A希亿 阅读(5109) 评论(0) 推荐(0) 编辑
摘要:还是先发DX的文档的记录:IDirect3DDevice9::SetTextureStageStateSets the state value for the currently assigned texture.HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value );ParametersStage[in] Stage identifier of the texture for which the state value is set. Stage identifiers a 阅读全文
posted @ 2011-11-07 22:01 ☆A希亿 阅读(463) 评论(0) 推荐(0) 编辑
摘要:导读: DirectInput编程基础 - 简介 出 处: 中国游戏开发者 [ 2001-09-09] 作 者: 目 录 1.1 DirectInput概念 1.2 设置DirectInput 1.3 列举设备 1.4 设置设备 1.5 取得输入数据 绪言 输入相对于图形和声音而言从未成为游戏开发中的非常重要的论题。读取键盘按键、鼠标移动和游戏杆位置似乎并没有什么困难,但随着新输入设备对市场的强烈冲击以及DirectX的发行,这一问题变得日益重要了。 如果用户是DirectInput编程的新手,那么应先排除掉一些旧观念。应记住的重要一点是DirectInput的得名是因为... 阅读全文
posted @ 2011-11-07 21:47 ☆A希亿 阅读(4675) 评论(0) 推荐(0) 编辑
摘要:typedef struct _D3DPRESENT_PARAMETERS_ { UINT BackBufferWidth, BackBufferHeight; D3DFORMAT BackBufferFormat; UINT BackBufferCount; D3DMULTISAMPLE_TYPE MultiSampleType; DWORD MultiSampleQuality; D3DSWAPEFFECT SwapEffect; HWND hDeviceWindow; BOOL Windowed; BOOL EnableAutoDepthStencil; D3DFORMAT AutoDe 阅读全文
posted @ 2011-11-07 21:46 ☆A希亿 阅读(593) 评论(0) 推荐(0) 编辑
摘要:光照的两大要素是光源和物体的材质,物体表面材质属性决定了它能反射什么颜色的光线以及反射多少光线。一、Direct3D中材质的定义D3D中材质通过D3DMATERIAL9结构来表示:typedef struct D3DMATERIAL9 { D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power;} D3DMATERIAL9, *LPD3DMATERIAL9;Diffuse-指定表面反射的漫反射光。Ambient-指定表面反射的环境光。Spe 阅读全文
posted @ 2011-11-07 21:45 ☆A希亿 阅读(1777) 评论(0) 推荐(0) 编辑
摘要:D3DXCreateTextureFromFileEx上次在玩公告板时,用到了D3DXCreateTextureFromFileEx函数,上次的主要目的是公告板,对这个函数没太多的关心,现在发现这个函数是D3DXCreateTextureFromFile的高级板本,还是有它优势的,不然它就没有存在的意义了。D3DXCreateTextureFromFileEx这个函数有14个参数,在MSDN中的原型(后面中文解释为本人理解,仅供参考,原文请查看MSDN):HRESULT D3DXCreateTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, ... 阅读全文
posted @ 2011-11-07 21:03 ☆A希亿 阅读(3636) 评论(3) 推荐(0) 编辑
摘要:在D3D中有3种类型的灯光,用它们可以让3D世界显得真实 。一、灯光类型1、点光(Point Light) 从一个点向周围均匀发射的光,有最大的照明范围,亮度随距离衰减,最明显的一个例子就是我们家里用的灯泡。2、方向光(Directional Light) 方向光是一组没有衰减的平行光,类似太阳光的效果。3、聚光灯(Spot Light) 最复杂的一种灯,有光源点位置、有方向、有范围、有发光的内径和外径,光照强度还会随距离衰减。类似的例子是电筒。二、灯光结构D3D中灯光通过D3DLIGHT9结构来表示:typedef struct D3DLIGHT9 { D3DLIGHTTYPE Typ... 阅读全文
posted @ 2011-11-07 21:02 ☆A希亿 阅读(1701) 评论(0) 推荐(1) 编辑
摘要:IDirect3DVertexBuffer9::LockLocks a range of vertex data and obtains a pointer to the vertex buffer memory.HRESULT Lock( UINT OffsetToLock,自缓存的起始点到开锁定的位置的偏移量 UINT SizeToLock,所要锁定的字节数 VOID ** ppbData,指向锁定存储区的起始位置的指针 DWORD Flags改标记描述了锁定方式 ); 注:当OffsetToLock和SizeToLock都为0时,锁定整个缓存 ParametersOffsetToLock 阅读全文
posted @ 2011-11-07 21:00 ☆A希亿 阅读(900) 评论(0) 推荐(0) 编辑
摘要:CreateVertexBuffer的形参说明HRESULT CreateVertexBuffer( UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle);­length:指定缓冲区的大小,以字节为单位。Usage:指定顶点缓冲区的属性,可以设置成0:FVF:这个就用到了我们上面创建的灵活顶点格式Pool:指定顶点缓冲区的内存类型。我们采用的是D3DPOOL_DEFAULT,意思是顶点缓冲区尽可能存在显存中。其 阅读全文
posted @ 2011-11-07 21:00 ☆A希亿 阅读(2312) 评论(0) 推荐(0) 编辑
摘要:1,要点首先我觉得D3D纹理映射的选项太多,给人一种眼花缭乱的感觉,而且刚看的时候并不容易分辩不同选项之间的差别,不知道如何使用这些选项,或者说不知道这些选项对应以前经验中的哪些效果。这些选现包括:Dark mappingAnimated Dark mappingBlending with Material Diffuse ColorDarkmap with Material Diffuse ColorGlow mappingDetail mappingModulate mappingBlending with Frame BufferTrillinear FilteringClamp Add 阅读全文
posted @ 2011-11-07 20:58 ☆A希亿 阅读(1687) 评论(0) 推荐(1) 编辑
摘要:D3D资源管理资源分类 顶点缓冲(VertexBuffer) 索引缓冲(IndexBuffer) 纹理(Texture)资源存储 显存(Video Memory) 通过AGP直接访问的内存(AGP Aperture,也叫做非本地显存) 系统内存(System Memory)性能权衡 我们在创建D3D资源的时候需要填写两个参数:D3DPOOL、D3DUSAGE。这两个参数共同决定了资源最终存储在显存、非本地显存还是系统内存中。枚举类型D3DPOOLD3DPOOL_DEFAULTD3DPOOL_MANAGEDD3DPOOL_SYSTEMMEMD3DPOOL_SCRATCH D3DPOOL_MANA 阅读全文
posted @ 2011-11-07 20:49 ☆A希亿 阅读(453) 评论(0) 推荐(0) 编辑
摘要:D3D是 COM组件,它在服务进程中运行,而不在当前的客户进程中。在DX组件运行过程中,要创建一系列接口对象,如CreateDevice()返回接口指针,这些接口及其占用内存什么时候释放,要通过“引用计数”的技术来解决。AddRef()给这个接口指针的计数加1,而Release()会将之减1。一旦减到0,表示没有客户使用了,相关的接口就释放了。由此可知,每次调用Rlease()后,并不一定会释放内存,而是当引用计数归0时释放内存。 这样,对接口指针的使用,就像维护堆栈的平衡一样,要仔细,而且按照某种约定规则使用。 但平时D3D编程中,怎么不用AddRef()呢?这是由于一个接口指针,如ID.. 阅读全文
posted @ 2011-11-07 20:46 ☆A希亿 阅读(2755) 评论(0) 推荐(1) 编辑
摘要:反射只是翻转摄影机,将场景渲染到Texture上,或使用STENCIL蒙板直接绘制。具体计算查看了D3D的 Sample,如下:D3DXMATRIXA16 matViewSaved; m_pd3dDevice->GetTransform( D3DTS_VIEW, &matViewSaved ); //取得view matrix//定义一个翻转的参考平面,可根据需要自己定义位置及法线 D3DXVECTOR3 vPoint(0,0,0); D3DXVECTOR3 vNormal(0,1,0); D3DXMATRIXA16 matView, matReflect; ... 阅读全文
posted @ 2011-11-07 20:45 ☆A希亿 阅读(1267) 评论(0) 推荐(0) 编辑