摘要:
这个程序创建并渲染几种不同的能够使用D3DXCreate*函数创建的3D物体。 Uses a left-handed coordinate system to create a mesh containing an axis-aligned box.HRESULT D3DXCreateBox( LPDIRECT3DDEVICE9 pDevice, FLOAT Width, FLOAT Hei... 阅读全文
摘要:
这个程序使用D3DXCreateTeapot函数创建并用DrawSubset函数渲染一个纺纱茶壶。 Uses a left-handed coordinate system to create a mesh containing a teapot.HRESULT D3DXCreateTeapot( LPDIRECT3DDEVICE9 pDevice, LPD3DXMESH * ppMesh, ... 阅读全文
摘要:
立方体——只比三角形稍微复杂一点,这个程序渲染一个线框立方体。 这个简单的绘制和渲染立方体的程序的运行结果如下图所示: 源程序: /************************************************************************************** Renders a spinning cube in wireframe mode. D... 阅读全文
摘要:
3.2 渲染状态 Direct3D提供了多种渲染状态,它影响几何物体怎样被渲染。渲染状态有默认值,因此假如你的应用程序需要不同于默认设置的渲染时,你仅仅改变它即可。一种渲染效果会一直起作用,直到你下一次改变渲染状态为止。为了设置一个渲染状态,我们使用下面的方法: Sets a single device render-state parameter.HRESULT SetRenderState( ... 阅读全文
摘要:
3.1顶点/索引缓存 顶点和索引缓存有相似的接口并且共享相似的方法;因此我们把它们合在一起讲解。一个顶点缓存是一块连续的存储了顶点数据的内存。同样的,一个索引缓存是一块连续的存储了索引数据的内存。我们使用顶点和索引缓存保存我们的数据是因为它们能被放置在显存中。渲染显存中的数据要比渲染系统内存中的数据快的多。 在代码中,一个顶点缓存是通过IDirect3DVertexBu... 阅读全文
摘要:
聚光灯示例,截图: 源代码: /************************************************************************************** Demonstrates using a spot light with D3DX objects. You can move the spotlight around the sce... 阅读全文
摘要:
点光源示例,截图: 源代码: /************************************************************************************** Demonstrates using a point light with D3DX objects. You can orbit the scene using the left a... 阅读全文
摘要:
平行光示例: The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState. Syntax SHORT... 阅读全文
摘要:
5.4光源 Direct3D支持三种类型的光源。 点光源——这种光源在世界坐标中有一个位置且向所有方向上都照射光线。 方向光源——这种光源没有位置但是向指定方向发出平行光线。 聚光灯——这种类型的光源和手电筒的光类似;它有位置并且发出的光在指定方向上按照圆锥形照射。这个圆锥形有两个角度,θ和φ。角度θ描述内圆锥,φ描述外圆锥。 在代码中一个灯光资源是通过D3DLIGHT9结构来表现的。 ... 阅读全文
摘要:
为了提高场景的真实性,我们可以为其加入灯光。灯光也能帮助表现物体的立体感以及物体的实体形状。当使用灯光时,我们不再自己指定顶点的颜色;Direct3D中每个顶点都通过灯光引擎来计算顶点颜色,该计算是基于定义的灯光资源,材质以及灯光资源关心的表面方向。通过灯光模型计算顶点颜色会得到更真实的场景。 5.1灯光的组成 在Direct3D灯光模型中,灯光是通过灯光资源的三个成员之一来照射的,... 阅读全文
摘要:
6.4 Mipmaps 就象6.3节所说的,在屏幕上的三角形和纹理三角形通常是不一样大的。为了使这个大小差异变小,我们为纹理创建mipmaps链。也就是说将一个纹理创建成连续的变小的纹理,但是对它们等级进行定制过滤,因此对我们来说保存细节是很重要的(如图6.4)。 6.4.1 Mipmaps过滤器 mipmap过滤器是被用来控制Direct3D使用mipmaps的。设置mipmap... 阅读全文
摘要:
纹理映射是一种允许我们为三角形赋予图象数据的技术;这让我们能够更细腻更真实地表现我们的场景。例如,我们能够创建一个立方体并且通过对它的每个面创建一个纹理来把它变成一个木箱(如图6.1)。 在Direct3D中一个纹理是通过IDirect3DTexture9接口来表现的。一个纹理是一个类似像素矩阵的表面它能够被映射到三角形上。 6.1 纹理坐标 Direct3D使用一个纹理坐标系统,它是由用水平方... 阅读全文
摘要:
该例程演示了如何设置纹理寻址模式。 截图: 源程序: /************************************************************************************** Allows the user to switch between the different texture address modes to see what ... 阅读全文
摘要:
该例程演示了怎样对一个立方体映射板条纹理。 截图: vertex.h: #ifndef __VERTEX_H__#define __VERTEX_H__class cTextureVertex{public:float m_x, m_y, m_z;float m_nx, m_ny, m_nz;float m_u, m_v; // texture coordinates cTextureVe... 阅读全文
摘要:
使用DirectX纹理工具创建Alpha通道 绝大多数普通图象文件格式没有存储alpha信息,在这一部分我们给你演示怎样使用DirectX纹理工具来创建一个带alpha通道的DDS文件。DDS文件是一个为DirectX应用程序和纹理设置的图象格式。DDS文件能够利用D3DXCreateTextureFromFile函数读进纹理中,就象bmp和jpg文件一样。DirectX纹理工具被... 阅读全文
摘要:
我们介绍一种叫做混合(blending)的技术,它允许我们混合像素,我们通常用已经光栅化的像素光栅化同一位置的像素。换句话说就是我们在图元上混合图元,这种技术允许我们完成多种特效。 7.1混合因素 观察图7.1,我们将一个红色的茶壶绘制在一个木质背景上。 假设想让茶壶有一个透明度,以便我们能够透过茶壶看见背景(如图7.2)。 我们怎样才能实现这个效果呢?我们只需要在木箱子上光栅化茶壶三角形,我... 阅读全文
摘要:
tinyxml是个高效精简的xml解析开源代码. 针对tinyxml直接使用对于对xml不是很熟悉的入门新手来说,有些概念难以理解,因此我将其封装后,供大家使用. 头文件: #include #include "tinyxml.h" using namespace std; class CXML { public: CXML(void) { } ~CXML(void... 阅读全文