DXUT 设计指南

摘要: DXUT设计指南 DXUT是一个建立在Direct3D API之上的,被大部分Direct3D指南和例子所使用的层。它的目标是创建Direct3D例子、原型、工具,更容易的建立坚固、专业的游戏。DXUT概观初始化DXUT使用基于DXUT的程序窗口使用DXUT设备使用DXUT主循环处理DXUT的错误DXUT高级设备选择DXUT高级功能See also: DXUT参考.DXUT概观本主题提供对DXUT概观的高级介绍。概观特点局限性启动一个新工程DirectX April 2005 SDK中DXUT的改进自DirectX Summer 2003 SDK以来DXUT的变化概观DXUT框架的设计是为了帮 阅读全文
posted @ 2011-06-09 17:30 DoubleSnake 阅读(2786) 评论(0) 推荐(0) 编辑

8、DXUT框架

摘要: Copyright © MikeFeng QQ: 76848502 温故而知新,前面的DXUT框架我只看了一个外壳,我觉得这次框架的亮点就在于它对于图形界面的支持。如果说Win32 API SDK中gdi部分是主旋律,那么MFC就是一个流行歌曲作家发挥之后完成的作品,而DXUT的图形框架则继承了Platform SDK中的风格,代码行间给人一种高贵的感觉。-,-扯远了,拉回来。因为gdi函数都是C API,不利于代码的重用,DXUT框架则把他们包装成了C++的类,以便于用户继承更改控件特性。D3D的知识学到这里基本上可以看懂DXUT框架了,所以不必担心,但要是不理解Windows消息 阅读全文
posted @ 2011-06-09 17:14 DoubleSnake 阅读(482) 评论(0) 推荐(0) 编辑

7、重纹理与纹理混合

摘要: Copyright © MikeFeng QQ: 76848502 多重纹理MultiTexture:使用多张纹理来渲染一个场景,只调用一次(DrawPrimitive) 纹理混合TextureBlending:按要求混合在同一个位置的像素点上色彩或透明度 在多重纹理(multitexturing)出现之前,DirectX支持的是多次渲染(multipass rendering)。但是因为OnFrameRender中要进行多次渲染(即Draw*的调用),效率很低。自从显卡开始支持多重纹理之后,游戏的性能得到了很大的提升:因为多重纹理只渲染一次,而在渲染之前通过调用SetTexture 阅读全文
posted @ 2011-06-09 17:13 DoubleSnake 阅读(702) 评论(0) 推荐(0) 编辑

7、多重纹理和纹理混合

摘要: Copyright © MikeFeng QQ: 76848502 多重纹理MultiTexture:使用多张纹理来渲染一个场景,只调用一次(DrawPrimitive) 纹理混合TextureBlending:按要求混合在同一个位置的像素点上色彩或透明度 在多重纹理(multitexturing)出现之前,DirectX支持的是多次渲染(multipass rendering)。但是因为OnFrameRender中要进行多次渲染(即Draw*的调用),效率很低。自从显卡开始支持多重纹理之后,游戏的性能得到了很大的提升:因为多重纹理只渲染一次,而在渲染之前通过调用SetTexture 阅读全文
posted @ 2011-06-09 17:11 DoubleSnake 阅读(8110) 评论(0) 推荐(0) 编辑

6、光照和材质

摘要: Copyright © MikeFeng QQ: 76848502 D3D支持三种光:环境光(Ambient Light),漫反射(Diffuse Light)和镜面反射(Specular Light)。镜面反射需要更多计算,因此D3D默认关闭镜面反射。可以通过给SetRenderState传D3DRS_AMBIENT来设置环境光。 在现实世界中,我们看到一个红色的物体是因为其他颜色的光线被这个物体吸收了,我们看到的是这个物体反射的红色光。D3D引入材质这个概念来模拟现实。 Typpdef struct D3DMATERIAL9 { D3DCOLORVALUE Diffuse, Am 阅读全文
posted @ 2011-06-09 17:10 DoubleSnake 阅读(1431) 评论(0) 推荐(0) 编辑

5、动画和矩阵变换

摘要: Copyright © MikeFeng QQ: 76848502 D3D中世界的运动是通过矩阵变化完成的。这里不打算讲数学知识,相关问题请参考计算机图形学书籍。 在D3D中矩阵变换分为三种:世界变换,观察变换和投影变换。世界变换描述了物体本身的缩放,旋转和平移,也就是物体本身的运动;观察变换描述了一个观察者在场景中的位置和朝向;投影变换描述了观察者可以看到内容的范围,类似这个范围类似于削去顶部的金字塔形状,该变换将透视法应用到一个3D场景中。 矩阵在D3D中是按语言分开定义的,如果用的是C语言,那么只能利用D3DMatrix;如果用的是C++,那么还可以用D3DXMatrix。它们 阅读全文
posted @ 2011-06-09 17:08 DoubleSnake 阅读(2093) 评论(0) 推荐(0) 编辑

4、纹理

摘要: Copyright © MikeFeng QQ: 76848502 纹理在D3D中是一个非常重要的概念,它的出现改变了以前3D物体表面不真实的状况,为程序员提供了将2维图像应用到3维物体上去的功能。请做好心理准备,因为新的概念将像暴风骤雨般的袭来,而在没有弄懂基本概念之前是不可能进行下一步的学习的。下面是一些术语的大致概念:纹理( Textrue ):将要应用到3维(或者2维)模型中的图片,可以有dds, hdr, bmp, tga, jpg, png等多种格式,各种格式可以有8位,16位,32位,64位以及128位的色彩位深 纹理坐标( Textrue Coordinates ): 阅读全文
posted @ 2011-06-09 17:07 DoubleSnake 阅读(676) 评论(0) 推荐(1) 编辑

2、顶点缓冲

摘要: Copyright © MikeFeng QQ: 76848502 D3D9以一种比较易于理解的方式让程序员来组织游戏画面,这种方式就是顶点缓冲。程序员可以自己定义一组记录多边形定点颜色,纹理位置等的数组,让D3D9去自动生成多边形内部每个像素的信息。为了和以后的vertex shader相区别,我们现在谈论的都是固定功能的顶点处理( Fixed-Function )。 上面一段话似乎有点晦涩,让我们首先来看看这些术语的定义吧:顶点缓冲Vertex Buffer:由用户定义的,包含顶点信息的数组。 首先我们来学习一下Vertex Buffer的技术。我喜欢先看代码再讲理论,否则看了理 阅读全文
posted @ 2011-06-09 17:06 DoubleSnake 阅读(2177) 评论(0) 推荐(0) 编辑

1、框架

摘要: Copyright © MikeFeng QQ: 76848502 友情提醒:所谓的框架是指SDK目录下\Samples\C++\Common路径下的DXUT系列函数包装。学习框架的前提是必须有足够的Windows API,GUI编程经验,必须熟悉Windows的消息机制,回调机制,最好有万行左右的C/C++编程经验。MFC在这里没有任何用处。另外我觉得最好在看程序之前对于D3D的所有概念有点了解,什么是vertex,texture,matrix,lighting,mesh等等,以及相关的数学概念。这些都可以在网上找到中文翻译,帮助你快速入门。 DXSDK2006和2003版的比起来 阅读全文
posted @ 2011-06-09 17:05 DoubleSnake 阅读(413) 评论(0) 推荐(0) 编辑

3、索引缓冲

摘要: 索引缓冲Index Buffer是由用户定义的,用来告诉D3D渲染顶点顺序的WORD或者DWORD数组。索引缓冲离不开顶点缓冲,但是顶点缓冲却不一定需要索引缓冲。创建索引缓冲的过程和创建顶点缓冲类似,首先是声明,然后在OnCreateDevice中初始化和创建,在OnFrameRender中渲染,在OnDestroyDevice中销毁。相关代码如下:声明:LPDIRECT3DINDEXBUFFER9 g_pIB = NULL; // Buffer to hold indecesOnCreateDevice:HRESULT hr;V_RETURN( g_DialogResourceManager 阅读全文
posted @ 2011-06-09 17:04 DoubleSnake 阅读(1200) 评论(0) 推荐(0) 编辑