博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年3月6日

摘要: 本文列举了Direct3D中各种纹理应用实现:黑暗贴图,发光贴图,漫反射映射贴图,细节纹理,纹理混合,有较详尽的注解。其中黑暗贴图,发光贴图,细节纹理都是采用多重纹理的方法实现(也可以采用多次渲染混合实现)。示例代码使用Beginning direct3D game programming中的框架,省去不少事情,可以专注纹理话题。代码:点此下载下面来看代码与效果:正常的纹理贴图效果:正常的纹理贴图... 阅读全文

posted @ 2011-03-06 20:20 +石头+ 阅读(343) 评论(0) 推荐(0)

摘要: 缩放矩阵 模型比较大时,就需要把它缩小,这样就需要使用到缩放矩阵。缩放矩阵如下所示: 其中的S就是缩放系数,如果要放大,就需要设置S大于0。如果要缩小,就要设置S小于1大于0。D3D里已经准备好一个设置这样缩放矩阵的函数,它就是 D3DXMATRIX * D3DXMatrixScaling( D3DXMATRIX * pOut, FLOAT sx, FLOAT sy, FLOAT sz ); 函数的第一个参数就是返回缩放矩阵,第二个参数是沿着X轴的缩放系数,第三个参数是沿着Y轴的缩放系统,第四个是沿着Z轴的缩放系数。如果三个缩放系数都相同的,就是等比例缩放,否则就是不等比例的缩放。比如需要设置 阅读全文

posted @ 2011-03-06 19:39 +石头+ 阅读(4768) 评论(0) 推荐(0)

2011年3月2日

摘要: 长话短说,为一个图形设置纹理的流程如下:创建纹理:D3DXCreateTextureFromFile(LPDIRECT3DDEVICE9 pDevice, LPCSTR pSrcFile, LPDIRECT3DTEXTURE9* ppTexture);设置纹理过滤器和设置多级渐进纹理过滤器,纹理三角形和屏幕三角形不能大小完全匹配时,使用纹理过滤器来克服这种畸变,多级渐进纹理过滤器是创建一个多级渐进... 阅读全文

posted @ 2011-03-02 22:56 +石头+ 阅读(223) 评论(0) 推荐(0)

2011年3月1日

摘要: 光照的组成:在D3D光照模型中,光源发出的光由以下3种类型的光组成:环境光(Ambient Light)可用于物体没有直接被光照射,而是而是由于其他物体对光的反射。漫射光(Diffuse Light)当光达到物体表面时它将向各个方向反射,观察者处于任何角度观察都一样。从一个光源发出的光一般都是这种类型。镜面光(Specular Light)光沿着特定方向传播,当达到一个表面时,严格的沿着另一个方向... 阅读全文

posted @ 2011-03-01 22:11 +石头+ 阅读(251) 评论(0) 推荐(0)

2011年2月25日

摘要: #include "StdAfx.h"#include "D3DUtil.h" const int Width = 640;const int Height = 480; LPDIRECT3D9 g_pD3D;LPDIRECT3DDEVICE9 g_pD3DDevice;ID3DXMesh* g_teapot; HRESULT InitD3D(HWND hWnd){ //创建IDirect3D9接... 阅读全文

posted @ 2011-02-25 11:37 +石头+ 阅读(306) 评论(0) 推荐(0)

2011年2月24日

摘要: 在Vertex中增加D3DCOLOR类型的属性着色分为平面着色和Gouraud着色。使用平面着色每个图元的每个像素都被一致的赋予第一个顶点所指定的颜色。在gouraud着色模式下,图元中个像素的颜色值由各顶点的颜色经线性插值得到(平滑过渡)。例程:具有颜色的三角形IDirect3DDevice9* Device = 0; const int WIDTH = 640;const int HEIGHT... 阅读全文

posted @ 2011-02-24 14:37 +石头+ 阅读(268) 评论(0) 推荐(0)

2011年2月22日

摘要: 创建顶点缓存和索引缓存访问缓存内容设置绘制状态绘制的准备工作(1)指定数据流输入源。(2)设置顶点格式。(3)设置索引缓存使用顶点缓存和索引缓存绘制所有的绘制方法要在IDirect3DDevice9::BeginScene()和IDirect3DDevice9::EndScene()之间绘制。 const float PI = 3.1415926; IDirect3DDevice9* Device... 阅读全文

posted @ 2011-02-22 17:25 +石头+ 阅读(655) 评论(0) 推荐(0)

2011年2月21日

摘要: 绘制流水线大致分为一下9个步骤:局部坐标系:无需考虑位置,大小或相对场景中的其他物体的朝向。世界坐标系:局部坐标系总的物体通过世界变换(workd transform)的运算变换到世界坐标系中,该变换通常包括平移(translation),旋转(rotation)以及比例(scaling)运算。世界变化用一个矩阵来表示,并有Direct3D通过IDirect3DDevice9::SetTransf... 阅读全文

posted @ 2011-02-21 16:51 +石头+ 阅读(340) 评论(0) 推荐(0)

2011年2月20日

摘要: Direct初始化分为4个步骤:获取接口IDirect3D的指针校验硬件顶点运算D3DPRESENT_PARAMETER结构创建IDirect3DDevice9接口主流程代码如下://Step1: Create the IDirect3D9 object    IDirect3D9* d3d9 = 0;    d3d9 = Direct3DCreate9(D3D_SDK_VERSION);    ... 阅读全文

posted @ 2011-02-20 22:57 +石头+ 阅读(241) 评论(0) 推荐(0)