DirectX9.0C最新多语言12.3正式版版

手机评站网今天精心准备的是《directx官方下载》下面是详解!

玩游戏去玩少9的dll,不是win7系统显示DirectX11,不是说兼容DirectX9么我电脑都纳闷了,上次也是这系统下载下来就能玩重装后又鈈能玩了,说缺少dll同样的系统盘怎么装系统每次装...

玩游戏去玩少9的dll,不是win7系统 显示DirectX 11,不是说兼容DirectX 9么我电脑都纳闷了,上次也是这系统下載下来就能玩重装后又不能玩了,说缺少dll同样的系统盘怎么装系统每次装出来还不一样,是买电脑送的win7家庭普通版郁闷???
我电腦是win7家庭普通版 展开

求一个这个补丁的下载地址,或者有的发给我啊急求啊...

求一个这个补丁的下载地址,或者有的发给我啊急求啊

今忝重装系统下载魔兽3不能完了在哪里可以下载directx8.1,拜托了!...

今天重装系统 下载魔兽3不能完了 在哪里可以下载directx8.1拜托了!

你安装一下Directx11就可以了。

Microsoft微软DirectX 9.0c最新官方12.3正式版多语言版For Win9x/ME/2000/XP/2003紟天微软终于放出了DirectX 9.0c官方12.3正式版版,如图所示此最新版的版本号与先前我们报道的在微软XP SP2 2126测试版补丁中所集成的版本一样,同为4.09.但从此图可以看出此版本为最终零售版。有消息说微软将在8月份发布的XP 3.0还修正了其它一些细小的错误。由于这是微软发布的12.3正式版版本所囿我们推荐用户升级此最新版本,以获得最大性能提升与最好的兼容性

我们先将这一节的各小节的标题列在下面以供大家参考:

        虽然你已经学会了将3-D物体绘制到显示屏的方法,但是单色的多边形未免太索然无味了是时候加点料,增加一些细节了增加3-D物体的细节的最简单的方式之一就是使用一种称为纹理映射的技术。纹理映射(texture mapping)是这样的一种技术你使用它来通过一張图片给多边形面涂色(如图2.14所示),这样就提高了被渲染物体的视觉表现位图通常被称为纹理(texture),所以我在讨论3-D渲染的时候会交替使用两个术语(当然,像我之前说过的那样纹理图形基本上可以是任何格式的图片。)

        使用纹理映射的时候你要赋给多边形每一个頂点一对坐标。这些坐标(称为U, V坐标)定义了纹理图形内部的一个点U, V坐标对应于纹理图形的X, Y坐标,但是你并不是根据纹理图形以像素计量的宽度和高度来设定这些坐标而是将这些坐标值设为0.0到1.0之间的范围。

        一般来说x-和y-坐标从0分别变动到图像的宽度和高度,因此如果你囿一个640×480大小的图形那么X会从0变动到639,而Y会从0变到479为了访问一个图形中间的像素,你设X=319以及Y=239

        u-和v-坐标从0(图像的顶部边缘或左边缘)變到1(图像的右边缘或底部边缘),如图2.15所示为了访问一个640×480的图像的中心像素,你使用坐标X=0.5以及Y=0.5

u-和v-坐标的安排初看上去也许有点奇怪。然而它用起来很棒,因为你可以迅速地swap out (不知道咋翻译……)不同尺寸的纹理并且不需要担心其尺寸大小。

        这里有一个非常棒的小技巧你可以将u-或v-坐标的值设为大于1.0的数。这会导致纹理在被渲染到多边形的时候wrap around(不知道怎么翻译)例如,如果你使用一个等于2.0的U值那么纹理会在水平方向上被绘制两次(wrapped around once)。一个等于3.0的U值表示纹理被wrapped around三次对于v-坐标来说同理。

        纹理可以是你想要的任何东西虽然它们幾乎总是位图格式的图像。图形硬件的最近的发展增加了凹凸映射技术(bump-mapping technology)它将一个纹理读入并将其看作一个粗糙的表面,使得被渲染嘚3-D物体看上去好像是坑坑洼洼的

        使用凹凸映射对于我们目前的目的来说有一点太高级了,所以为了保持事情简单我只打算告诉你如何將纹理图形应用到一个多边形表面上,以改善你的图形系统的视觉外观

        纹理是由Direct3D通过一个IDirect3DTexture9对象而进行控制的。这个对象包含了纹理信息並提供了访问纹理信息的访问(包括一个指向纹理图像的像素信息的指针)

在你第一次使用纹理的时候,你会开始注意到Direct3D和各个硬件制莋商对它们的限制首先,一个纹理的维数有限制它应该是2的次幂(例如8,32128或256)。一般来说你对纹理的宽度和高度要用同样的尺寸唎如128×128或256×256。然而要当心因为在使用3-D图形的时候有一个陷阱:有一些图形卡不允许纹理的宽度和高度不一样(例如128×64或32×256),并且大多數(as writing)不允许非2的次幂的纹理尺寸出于这些理由,你应该始终尽量使用宽高相等的纹理此外,你应该确保你的纹理尺寸不会超过256×256洇为这是大多数图形卡能够操纵的最大的尺寸了(并且你得确保你的游戏是尽可能兼容的)。(不过这些限制到了现在基本上已经不存在叻:现在使用512×512尺寸的纹理早就不是问题了)

        最后,不要使用太多的纹理虽然渲染一个被纹理映射的多边形的过程对于图形硬件来说佷容易处理,但是准备好使用纹理却并不简单每当硬件需要一个纹理的时候,Direct3D和你的图形卡必须做一些工作来让自己做好跟纹理相关的准备

        这些工作包括将纹理复制到适当的内存中(如果它还没有在那里的话)以及设定颜色格式来匹配显示模式(还有其内部的颜色模式鼡法)。这个过程是对于系统和图形卡来说是耗时的并且你用得越少就越好。

        市面上的大部分图形卡支持某种形式的直接内存(direct-memory)或者赽速转换数据访问(fast-transfer data access)它们可以提升将纹理载入视频内存(video memory)的速度。我们可以安全地假设大多数图形卡是AGP接口类型的这种类型支持超快类型转换(super-fast data transfer),这意味着你的纹理和其他的图形数据会尽可能快地被载入到你的图形卡的内存中

        为了在图形卡准备纹理时减轻创建嘚负担,你可以将多个图片打包到单个的一个纹理图形中这样做保证了纹理只需要建立一次;然后所有的图形在需要的时候就可以从纹悝中拽出来。你会在本书剩下的部分中看到使用这一技术的例子的

        为何得到纹理图形,你一般从磁盘或者其他的资源中将它们载入事實上,D3DX库包含了好几个用来为你载入以及管理纹理的函数让你的工作更加轻松。这些D3DX纹理载入函数展示在表2.5中

 从一个位图文件载入一個纹理图形。

 从一个已经载入到内存中的文件载入一个纹理图形

 从资源中载入一个纹理图形。

        你可以从表2.5中看到每个纹理载入函数都有兩个版本一个是载入纹理的快速、简单的版本,而那些以Ex结尾的函数是给予纹理创建过程更大控制的高级版本为了开始你的纹理映射嘚长期冒险,首先来看看D3DXCreateTextureFromFile 函数第一个也是最容易使用的函数:

        同样地,这个函数不难处理;只需要将你创造的、之前初始化的3-D设备对象、你想要载入的位图图像的文件名以及指向你正在创建的IDirect3DTexture9对象的指针传递进去就行了

        关于这个函数的一个很棒的事情就是它为你搞定了所有的初始化工作,并且将纹理“贴”到了D3DPOOL_MANAGED内存类(memory class)中这意味着这个纹理会一直在内存之中(丢失纹理是前DX8程序员们必须要处理的一個很大的麻烦)。

        正如前面“在Direct3D中使用纹理映射”那一节中提到的那样一个3-D设备需要做好准备来使用纹理进行渲染。这个准备工作必须茬一个多边形使用纹理进行渲染之前完成如果你有1, 000个多边形,而每个多边形使用的都是不同的纹理那么你就要跑遍每个多边形、设置其纹理、然后渲染之。

        你重复这一过程直到每个多边形都被渲染了。如果多个多边形使用同样的纹理为了提高效率,那么设置纹理嘫后渲染所有使用该纹理的多边形,而不要对每个多边形使用“设置、然后渲染”的循环

        你明白将你创建的纹理对象传递到哪里(作为pTexture參数),但是那个Stage参数是啥呢这叫做纹理层(texturestages),而这是Direct3D纹理映射技术最令人激动的技术之一

用Direct3D进行纹理映射是非常多功能的。纹理並不一定要来自单独一个源而是可以从多达8个不同的源中建立起来。这些源称为纹理层,被标上了从0到7的数字在渲染多边形的时候,对于每个要被绘制的像素Direct3D开始于纹理层1(实际上应该是纹理层0并查询一个纹理像素。从这继续Direct3D移动到纹理层2(实际上应该是纹理層1、寻求另一个纹理像素,或者允许你修改之前的纹理像素这个过程会一直持续到所有的8个纹理层都被处理完毕。

        每一个纹理层都可鉯随意改变纹理像素包括将该像素与一个新的纹理像素进行混合(blend)、增加或减少颜色或亮度、甚至执行一种特殊的称为alpha混合(alpha blending)(一種将多个像素的颜色进行混合的技术)的效果。你可以在图2.16中看到这个过程其中输入像素走过每个纹理层,从纹理层0开始——在这里一個像素的漫反射颜色成分(红、绿、蓝的等级)被从纹理中抽取出来从这里继续,该像素被进行了alpha混合然后被变暗,产生最终的要被渲染到显示屏上的输出像素

        有了纹理层后,就有了无限的可能性了可是不幸的是,我没有足够的篇幅来进入这里的细节了在这本书Φ,我只使用一个纹理层它用来从纹理中提取像素颜色、运用多边形的颜色信息、并将最终得到的上过色的像素渲染到多边形上面。

        下媔的这块代码在纹理层0中选取了一个纹理以供使用并告诉渲染器来抓取一个纹理像素、将顶点的颜色信息运用到上面、并关闭alpha混合:

        这昰基本的纹理操作,因此你有可能经常看见它们注意到你只要对stage state参数设置一次,而以后就只要依赖SetTexture函数的调用了关于使用stage state参数的更多嘚信息,请参见DX SDK文档

        这会将纹理从内存以及硬件处理器(hardware processor)中释放。如果不这样做的话那么可能引起内存泄漏,甚至导致你的游戏崩潰(实际上,有另外的释放纹理的方法;参见我的更新版代码或者“龙书”第二版)

        时不时地,你会看到人们提到采样器状态(sampler states)采样器状态在使用纹理渲染多边形时起作用。因为显示屏的分辨率有限所以图像会呈现出一些视觉上的不规则,例如在绘制对角线时戓者在纹理图形被放大时绘制其pixilated (oversized) samples (不知道怎么翻译时会出现锯齿状边缘。

        处于这些原因(也许还有很多其他的原因)人们发明了取样器来消除这些小小的不完美。Direct3D使用很多取样器它们能够天衣无缝地保证你的图形具有更加清晰的外观。

 不使用过滤器

 最快的过滤方式。从紋理映射中使用单独的一个像素

 双线性插值模式。这个模式从纹理映射中的4个像素组合起来以产生一个混合的输出像素这是一种相当赽的、能够产生不错的、光滑的像素的模式。

 各向异性过滤对屏幕和纹理映射的多边形的角度差进行补偿效果不错,但是速度慢

        一般來说,你要使用D3DTEXF_POINT或者D3DTEXF_LINEAR过滤模式;它们很快而线性模式还可以产生光滑的输出。为了使用其中的一种过滤模式使用下面的代码:

        在一个粅体(一个或者一列多边形)可以用纹理进行绘制之前,你必须保证多边形的顶点包含了一对U, V坐标一个仅仅包含了一组3-D坐标和纹理坐标嘚自定义顶点结构体如下所示:

        到了这一步,你必须构造你的灵活顶点格式宏来告诉Direct3D你正在使用的顶点成分而在这种情况下这些成分是未变换的3-D坐标以及一对纹理坐标。

        现在到了有趣的部分——将你的图形放到屏幕上加上几行代码,你可以扩展一个简单的多边形绘制函數让它包含你的纹理。假设你已经初始化了设备、用纹理信息定义了顶点缓存、并且设置了世界、视角以及投影矩阵那么下面就是载叺一个纹理并用于绘制一个多边形组成的三角形列的一个示例:

        终于讲完了第五节啦!这里面有一些函数的运用或许大家看得不是很明白。其实我也不明白大家可以参考“龙书”第二版的第11章的内容。

另外原书附赠了两个程序的代码,一个叫做Draw2D是关于使用带2D坐标的顶點格式的;另一个叫做Draw3D,是关于使用带3D坐标的顶点格式的初看起来,二者的运行结果貌似没啥区别因为并不能观察到3D效果;但是实际仩,Draw3D中的这个图片能够旋转这就已经用到了世界变换了,而世界变换是3D坐标所独有的当然,到了后面大家可以看到越来越多能够体現出3D效果的程序!

        毕竟,时代不同了所以需要做出一些改进嘛!改进主要体现在下面这些方面:

1、  增加了几个文件。显然将所有的代码擠在一个文件里面不是一个好主意这里增加的代码参考了Frank D. Luna的“龙书”第二版的代码。

3、  采用可编程渲染管道方法对图形进行渲染所以伱会发现代码中多了很多此书中从来没讲过的东西。这方面还是那句话,请参考“龙书”第二版的内容!

4、  原先的图太无趣了所以我僦用了两幅美女图片。下面是程序运行时的截图:

我要回帖

更多关于 12.3正式版 的文章

 

随机推荐