摘要:
前面已经介绍过ID3DXMesh接口了, 但是只是简单的用了D3DXCreate 来创建简单的几何体。这篇文章详细地介绍ID3DXMesh接口。1. Geometry Info ID3DXMesh 是从ID3DXBaseMesh继承下来的。ID3DXBaseMesh包含了vertex buffer 和 index buffer。通过这两者的组合我们可以画出任意三角形及任意三角形的组合。我们可以使用... 阅读全文
摘要:
当我们使用class的时候,考虑的是运行时的多态, 这个利用虚函数实现。基类建立起一个接口(虚函数),派生类可以从此进行派生,在不违反接口的语义的前提下重写基类的虚函数。 这就是传说中C++三大特性之一的多态。 但是这样的话有两个主要缺点: 一: 这些类型必须唯一同一个继承自某一个公共的基类。 二: 每次虚函数的调用都要通过一个额外的见解层----虚函数指针列表。 如果在编译期就知... 阅读全文
摘要:
如果是制作一个游戏,文字是其中比不可少的一部分,这篇文章主要讨论Direct3D中3中显示文字的方式。1. ID3DXFont D3DX 库提供了一系列基于ID3DXFont的接口来绘制文字。IDXDFont 是基于GDI 来绘制文字的。正因为此,ID3DFont能提供非常复杂的字体和格式,但是效率显然没直接往显卡上画东西高了。 创建和显示一个ID3DXFont通常需要如下几个步骤: (1) 填充... 阅读全文
摘要:
1. Stencil Buffer (模板缓冲的定义)注:我看网上都把stencil 命名为模板, 但是个人认为“挡板 ”合适,但是这个名字也许太”俗”了。每个像素都有自己对应的 Buffer,其实就是一个 32bit 的数,如 Color Buffer, Depth Buffer, Stencil Buffer. Stencil Buffer 与 ... 阅读全文
摘要:
1. Blending 的定义Blending 直接看的意思就是混合了, 那什么是混合呢?假设考虑这么一个情况:如果一个玻璃球放在一个木板上, 这样就必须能透过球看到后面的木板,用什么方法实现这种效果呢?这里就介绍Blending这种方法。看下面两张图片: 图一 图二图片一是未使用Blending的,图片二是使用了Blending的.这里可以非常清楚地看出两者的区别。而所谓混合也就是指一个前面的像... 阅读全文
摘要:
纹理映射(或者说材质):把一张图片映射到一个三角形中。这样的话就能使一个物体有更多的细节和真实感。在Direct3D中, 与纹理相关的接口是IDirect3DTexture9.1. Texture Coordinates(纹理坐标系)D3D使用的纹理坐标系包括:u_axis(水平坐标轴) 和v_axis(垂直坐标轴)。2.使用材质一个材质可以认为是一张图片, 它会被导入到IDirect3DText... 阅读全文
摘要:
为了使渲染出来的东西更加真实, 灯光是必须的。当我们使用灯光的时候我们就可以不用指定顶点的颜色。1. 灯光的组成(1) Ambient Light(环境光): 场景中所有的物体的表面会反射这种光源。 (2)Diffuse light(漫射光):当其碰到一个物体时,用各个方向反射。因为满反射的光会朝着物体的各个方向 反射, 所以会到达一个场中的任何地方。 因此,使用diffuse light的时候 ... 阅读全文
摘要:
1. 颜色的定义在D3D中, 颜色使用RGB形式表现的。有两种结构来表现颜色D3DCOLOR和D3DCOLORVALUE。2. 定点的颜色一个面的颜色是有其相应点的颜色决定的, 所以我们顶一个点的时候就得为其增加颜色变量。3. 渲染有两种渲染方式: flat shading 和Gourud shding.比如我们定义这样3个点的三角形然后用如下方式画出:得到的图形是这样的: 左图是用 flat ... 阅读全文
摘要:
通常,如果我们需要画一个立方体的话需要做什么?可以想象一下我们需要如下叫几个步骤:(1). 得到一个画布(2). 准备好需要画相关的点(3). 准备好摄像机(4).用2维图像来表现3维效果(5). 连接这些点 画出一个立方体1. 得到画布D3D中, 所有画图的操作都是在IDirect3DDevice9 中的, 所以我们就可以这样声明: IDirect3DDevice9* Device = 0; 出... 阅读全文
摘要:
渲染主要概念就是用一张2D图片来表现3D世界。即首先描述出一个3D场景, 然后用用2D的图片来表现它。下面是渲染的几个基本概念1.Model(模型) 用三角形组成的格式物体2.Vertex(点) 点构成三角形。因为在D3D中, 一个点除了要描述其位置之外还要描述其他的信息,所以单纯地用数学意义上的点来描述是不够的。如颜色: 当然,查看D3DFVF能得到所有关于点的格式的定义。3. (Triangl... 阅读全文