📄 direct3d㭦
字号:
材质:方法允许你设置一种材质的放射性以及镜面特性,它们用于定义物体表面反射光源的方式。
阴影:一个带有阴影的物体可以通过指定光源、物体投射出阴影、以及阴影所在的平面来创建。
纹理:纹理可以被映射的表面上或是直接进行着色。纹理操作子程序包括了一些有用的方法,如设置或获取纹理的颜色,控制纹理如何映射到表面上,以及将纹理设置为透明等。另外,纹理的质量可以通过使用改进映射的方法进行改善,这种方法提供预滤波,以对同一图象的较低的分辨率进行改进。
用户可视对象:保留模式支持应用程序定义的对象,程序员可以将之添加到场景中并进行着色。
视点:当场景在它被由3-D坐标转化为2-D坐标以在屏幕上显示之后,视点定义了实际可见的部分。摄像机控制方法设置位置,方向,以及视点的方位。程序员可以在透视和正视之间进行选择,并且可以设置可见柱体的前后剪贴位面。视点的界面同时也是被指定的从3-D到2-D空间实际上变形的地方。
扭曲:扭曲用于定义纹理是如何映射到一个可视对象上的。程序员可以选择平面,圆柱面,球面或是铬扭曲模式。
立即模式
大多数的立即模式接口中定义了在保留模式接口中所描述的功能的子集。这些接口提供了设备,纹理,材质,灯光,以及视点功能,典型地,会放弃一些手持功能以利于性能和/或灵活性。
一个需要注意的例外是ExecuteBuffer函数,它在保留模式API中不存在。一个执行缓冲是跟随在一系列指令后面的顶点,这些指令用于操作这些顶点。此功能使得应用程序自定义着色管道成为可能;变形和灯光模块两者都无效,并且预照明或预变形的顶点可以被供给光栅模块。
DirectX 2 SDK中的Direct3D
这一节将帮助你从DirectX 2 SDK中快速地找到所需要的Direct3D信息以及组件。
SDK中包括了如下的组件:
? DirectDra──提供对满屏显示内存的直接访问,以及硬件的粘贴和缓冲剪贴性能。
? DirectSound──包括对声响混音和回放的硬件和软件的支持。
? DirectPlay──支持通过一条调制解调器连接或是网路连接进行多媒体游戏。
? Direct3D──包括3-D图形接口。
? DirectInput──支持游戏杆的输入(已经集成在Win32中)。
? AutoPlay──允许允许基于CD的游戏在CD被插入CDROM中时的自动运行(已经集成在Win32中)。
安装DirectX 2 SDK
安装SDK是一个快速的毫无痛苦的过程(当然前提是你是一个够狂热的顽固分子,能够忍受将它从网站上下载下来的过程!)。从CD上完全安装DirectX 2大概要5到10分钟的时间,需要大约60MB的硬盘空间。选择自定义选项进行安装可以允许你选择要安装的组件,组件的清单见表3。
表3 自定义安装选项。
你可能只需要Direct3D和DirectDraw组件,但是安装程序不允许你仅仅只安装SDK的一部分内容。在表3中所示的内容就是它给定的东西。如果硬盘空间对你来说非常宝贵,你可以跳过对DirectX媒体的安装;它只是在你的代码中作为样例以及被查看器所使用。二进制样例文件以及代码覆盖了许多技术知识,你可能并不对所有的样例文件都感兴趣。安装程序不允许你挑拣和选择,但是你可以先将这些二进制样例文件和代码全部安装,然后再将你不需要的东西删掉。还有,“狐狸和熊”以及“Immortal Klowns”并不是Direct3D的演示。让我们实际一些,就是:如果你过分在乎几兆字节的空间,那么你几乎不可能是一个真正的3-D程序员。
基于本文剩余部分要达成的目的,我假设你已经将SDK安装在\dssdk目录(缺省目录)中了。如果你将SDK安装在了其它的地方,我想你应该是足够聪明的,能够自己进行必要的替换。
文档
在线帮助包含在\dxsdk\help\directx.hlp文件中。对于所有的DirectX 2 SDK组件来说,此文件是最主要的文档,并且包括浏览,教程,以及参考。
在\dxsdk\docs目录中有许多Microsoft Word文件和文本文件,这些文件中包含的内容同帮助文件中的内容相重复,但是它们的格式更加便于阅读(或许你希望将它们打印出来以便更好地学习)。表4列出了在此目录中同Direct3D有关的文件。
表3 dxsdk\docs目录下同Direct3D有关的文件名称
二进制和库文件以及头文件
工具和实用程序可以在\dxsdk\sdk\bin目录中找到。如果你安装了二进制的样例文件,它们将也会出现在这个目录。正如你所猜测的,头文件和库文件分别包含在\dxsdk\sdk\inc和\dxsdk\dsk\lib目录中。
如果你使用nmake工具通过操作makefiles文件来进行程序的构造,则你的环境变量需要被正确地进行设置。在SDK安装完毕后,如果你拷贝了样例文件所使用的makefile文件,则你应该准备好对样例文件进行编译,你自己的程序也是如此。如果你使用了一个不同的创建进程,你将不得不往您的连接列表中添加适当的目录,以创建你自己的makefile工程文件,等等。
样例代码
样例程序位于许多不同的地方。在SDK有三个演示游戏:“狐狸和熊”,“Rockem”以及“Immortal Klowns”。当然,仅仅“Rockem”使用了Direct3D。这些游戏的编译版本分别可以在目录\dxsdk\foxbear,\dxsdk\rockem,\dxsdk\iklowns中找到。此外,这些游戏的源代码也包含在SDK中,它们与同大约50个其它的样例程序以及实用程序一起,位于\dxsdk\sdk\samples 目录中。
\dxsdk\sdk\samples\readme.txt文件对创建过程作了简要的解释。在\dxsdk\sdk\samples目录中有大约一半的样例是针对Direct3D的。\dxsdk\sdk\samples\d3dsamp.txt文件则解释了到底哪些文件是针对Direct3D的,并且还对每个样例文件进行了简短的描述说明。
教程
SDK中带有一些手把手教学的教程样例:一些针对立即模式和保留模式的教程。如果你有时间阅读的话,它们将带给你一个有关Direct3D编程的非常速成的教学。它们将使你经历调用和显示3-D对象所需要的每一个步骤,并演示主要的功能。这些教程大概有12页纸那么长,你可以在DIRECTX.HLP文件中找到它。
媒体以及查看器
查看器既是一个样例,也是一个实用程序:它调用预先定义的对象(存储在.x文件中)并使你围绕这灯光,形状,颜色等播放。使用它可以操作位于/dxsdk\sdk\media目录中的对象。
另外的资源
3D编程是一件庞大的,复杂的事情,所以理所当然Direct3D也是非常庞大和复杂的。现在你应该知道你到底是已经准备好投入到Direct3D编程中呢,还是首先需要多学习一点知识。如果你已经具备了许多3-D编程的经验并且已经懂得了在这篇文章中迄今为止的每一件事情,则恐怕你将仅仅只需要阅读SDK的文档以及开始编程了。如果你举棋不定,或是仅仅计划采用保留模式做很少的一些事情,在SDK文档中有一个非常小的技术背景叫做“3D编程的一个基础技术”会对你有所帮助。如果你完全迷失了方向,你可能需要阅读一个图形文本或是首先继续进行其它的教学途径。
下面是针对所包含的信息的额外资源的一些建议。
COM
因为DirectX API集主要基于COM,你将需要了解一些有关使用COM的知识。不用担心!操作COM对象是一门飞速发展的科学,但是使用它们则是相当简单的。许多有关COM的信息可以在库的科技文章中找到。
交互媒体/游戏网站
如果你现在还没有看到交互媒体/游戏网站http://www.microsoft.com/ directX/,你需要赶快浏览一下。在这里开发者们可以发现许多有关Microsoft的交互媒体技术最新的信息。这里你将会找到一些技术文章,技术浏览,资源清单,以及FAQ,即高频问答,一句话,这里有许多你所需要的能够使你成功应用Microsoft技术来编写应用程序的信息。
站点包括了一个反馈页,我们希望你觉得它有用。当我们不能一对一的提供技术支持时,我们对一些简单的问题进行回答,并且将一部分注意力转移到内容的需求上来。你对什么技术带有问题呢?你希望我们在文章中提到什么样的问题呢?让我们知道。
错误报告以及支持
报告错误请发送到dexbugs@microsoft.com。注意此处只接收错误包括,不进行技术支持。
附录:在DirectX 3 SDK中有哪些新特性?
编者按:这一节是从DirectX 3 SDK中抽取的,它已经被作为一个快速的参考加到Sue Ledoux的文章中。完整的DirectX 3 SDX文档可以在MSDN的库中找到。
相较DirectX 2 SDK而言,DirectX 3 SDK提供了更多的服务─以及更多的创新门径。尽管DirectX 3 SDK中包含了额外的功能和服务,你使用DirectX 2 SDK或是最早用DirectX 1 SDK所编写的所有的程序仍然可以成功的编译,不需要任何改变。
这篇附录的目的在于帮助你在熟悉了DirectX 2 SDK的基础上快速了解DirectX 3 SDK和DirectX 2 SDK两者之间的显著不同。这些不同点我们按照组件进行分类,列在下面。
DirectDraw:对API没有进行改变。文档已经被更新,其中包括了一系列的教程,这些教程可以对你一步一步地进行指导,以帮助你学习如何编写简单的DirectDraw应用程序。要想阅读这些教程,请在DirectDraw文档中查看“DirectDraw教程”部分。
DirectSound:在DirectX 3中包含了DirectSound3D功能,它允许一个应用程序改变声源出现的位置。应用程序可以为定向的声源指定声音的锥体(cone),为移动的声音提供多普勒偏移(Doppler-shift)效果,还可以指定这些不同效果所发生的距离。如果需要更多有关DirectSound新特性的信息,请参看文档中DirectSound一节“三维音响”部分。
DirectPlay:DirectPlay已经变成了一整套具有继承和延续性的技术,它不但提供了一种方法以使应用程序之间相互进行通信,而不依赖于传输,协议,以及在线服务,而且还不需要依赖中间商(matchmaking)的服务。为了实现这些新的技术,添加了IDirectPlay2,IDirectPlay2A以及IDirectPlayLobby接口。如果需要更多的有关DirectPlay的新特性,请参看文档中“DirectPlay版本3中有哪些新特性”部分。
Direct3D:对API没有进行改变。保留模式的教程已经被更新,简化。要阅读此教程,请参看Direct3D文档中“Direct3D保留模式教程”部分。
DirectInput:DirectInput现在包括了对鼠标和键盘输入设备的支持,就象对游戏杆的支持一样。
DirectSetup:在DirectSetup主包括了一个新的功能,它帮助应用程序在安装的过程中在注册库中创建适当的输入。
AutoPlay:AutoPlay的文档现在已经包括了Windows NT的信息。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -