用户登录
用户注册

分享至

direct3d人才

  • 作者: 三好学生与学习标兵
  • 来源: 51数据库
  • 2020-09-26
Microsoft Direct3D是Microsoft DirectX 2 交互媒体技术的实时三维(3-D)图形组件。DirectX 2包括DirectDraw,DirectSound,DirectInput,以及DirectPlay应用程序编程接口(APIs)。这些技术在Windows 95操作系统中被支持,并且将被合并入下一版发行的Win32 API中。DirectX 2也即将可以在Windows NT操作系统以及Apple Power Macintosh环境中使用。
Direct 3D以及其它的DirectX技术意图给程序员们同时提供两个最好的环境─一个底层的,高性能的接口,它同硬件相结合,具有同设备无关的灵活性。对于Direct3D,程序员可以将3-D图形功能揉合在Windows程序中,以充分利用其始终存在的硬件加速性能,同时,程序员们并不需要针对特定的硬件编写特殊的代码。
当我开始着手学习有关Direct3D的知识时,我被DirectX 2中所包含的材料的数量惊呆了:二进制文件,库文件以及头文件,样例代码和演示游戏,帮助文件,说明文件,以及文档。Direct3D是在SDK中最大的和最复杂的组件。再加上测试人员的邮件,新闻报道,以及第三方的支持等,我发现我自己简直就要被埋葬了。所以尽管我们并不缺少有关Direct3D的信息,但是要想在里面爬梳整理一番并找到自己需要的东西还是非常劳心费时的。这篇文章只是一个有关Direct3D技术,SDK,和资源的概述,起到一个类似街道地图的作用。尽管大多数的信息都可以在文档中被找到,但是,如果你需要制造产品并得到快速的技术咨询,而你又没有足够时间去搜索的话,这篇文章就会对你有所帮助了。
在你阅读完这篇文章之后,你应该能够回答如下的这些问题:
什么是Direct3D?它的主要特性是什么?它对我们的应用程序有所帮助吗?
使用Direct3D,我们需要什么类型的计算机?
我们需要什么样的背景知识?
学习它最快我们需要多少时间?
我们从哪里开始入手?在哪里我们能找到更多的信息?
一旦你品尝到了Direct3D的滋味,就会深深沉溺于Direct3D的3-D编程中,你将会知道如何着手去学习如何将Direct3D的功能添加到你的应用程序中。

运行时的环境
你需要一台可以运行Windows 95的多媒体计算机或兼容机。对于多媒体的三个组成部分你可能还并不清楚,它们是一个CD-ROM驱动器,一块声卡,以及一块8比特或更高比特的视频卡。
推荐的系统是一台配备有Inter奔腾90或更高芯片的100%兼容的PC系统,至少要有16MB的内存。
最小系统是一台配备Inter 486/66芯片的带有8MB内存的兼容机。但是让我们诚实一些:这些配置对于其它的一些DirectX组件或许可以工作得不错,但是我们都知道3-D图形的操作在使用计算机资源时是非常贪婪的,所以在把系统推荐给你的客户之前请先确定在所有的配置上您的应用程序正确可用。

支持的硬件
这里是现在被DirectX 2所支持的硬件清单。“被支持”的意思是指DirectX 2支持硬件的部分硬件加速(hardware-acceleration)特性,或是驱动和硬件已经通过DirectX 2组件的测试,并具有相当的性能。它并不意味着具有完美的性能,也并不表示Microsoft或是硬件生产厂商真正书写了驱动和DirectX 2的硬件抽象层(Hardware Abstraction Layer(HAL))。当然,我敢打赌,这些定义相当的好。
2-D图形:ATI,Chips & Technologies,Cirrus Logic,Matrox,S3,Tseng Labs,Western Digtal。
3-D图形:3DLabs,ATI,Creative Labs,Matrox,Rendition,S3。
声音:Aztech,Creative Labs,ESS,MediaVision,Microsoft。

开发环境
你需要使用Win32 SDK来构造DirectX 2的应用程序。在样例文件带有为Microsoft Visual C++(2.0版或更高版本)所写的makefiles文件,但是,当然它也可以在其它的开发环境中被编译。如果你是一个Watcom C/C++(需要10.05版或更高版本)的用户,请确定你已经查看过样例文件目录中的说明(readme)文件,该文件可以给你一些指导。
因为Direct 3D以及其它的DirectX 2组件是新出现的技术,所以它们还没有被集成在Windows中。在它们被集成之前,你将不得不在你的应用程序的安装过程中包括它们。在DirectX 2 SDK中对这些你将需要做的事情作了介绍并包含了相应的组件(它们的名称是,有够让人惊讶的,叫做DirectSetup)。

即将到来的平台
在不远的将来的某一天,你一觉醒来,会发现太阳高高地照耀着,鸟儿欢乐地歌唱着,同时DirectX 2在Windows NT操作系统和Apple_ Power Machintosh中被支持着。一旦我们得到了确定的日期,我们将会通知你的。嗨,我们别太费劲了,这毕竟是软件工业啊!如果你希望尽早知道有关这些以及其他的Microsoft交互媒体技术发行日期的话,最好的方法就是同交互媒体以及游戏开发者(Interactive Media and Game Developers)网站(Web site): http://www.microsoft.com/DirectX/.相联系。你也将能够得到到现在为止DirectX 2所支持的硬件的最新清单,更多的驱动以及HAL实现变得可以使用。

架构(Architecture)
这是一张精致的图表,它显示了Direct3D同Windows架构是如何联系的:

Direct3D 结构图
DirectDraw是针对2-D图形,3-D图形以及视频的Windows的组件引擎。它被应用程序和Direct3D两者直接使用。如果你决定在你的应用程序中使用Direct3D,则你同样需要对DirectDraw有较好的了解。
硬件抽象层(HAL)是特定硬件代码的老家,它实现一些有益的特性,包括硬件的剪贴以及页面的翻转等。伴随硬件抽象层的是HEL,也叫硬件仿真层(hardware emulation layer),它没有显示在上面的图1中。它包含了所有可以在DirectDraw和Direct3D中使用的功能的软件实现。无论安装了什么硬件,HEL和HAL的组合都允许应用程序从中获得最大的收益,而不用牺牲设备的无关性。程序员可以使用一种标准的方法来编写代码,这种代码无论在什么系统上都会竭尽所能地快速运行。
在图中表示为“其它的3D APIs或引擎”的一个使用DirectDraw和Direct3D的例子是OpenGL。这是另外一种可从Microsoft中获得使用的3-D技术,它的目标是high-end CAD/CAM以及科学应用程序群体(scientific-application crowd)
Direct3D着色途径(rendering pipeline)组成了三个模块:灯光模块(the lighting module),变形模块(the transformation module),以及光栅模块(the rasterization module),每种模块都可以在软件中仿真以及被硬件加速,并且能够采用不同的实现方法进行交换(如果需要的话,可以在空中),以适应应用程序独特的需要。Direct3D集成有两种灯光模块,一种变形模块,以及两种光栅模块。
尽管在图中不是一目了然,Direct3D,它实际上是两种3-D包装的合一体。程序员可以选择高级别的保留模式API(Retained Mode API),也可以选择低级别的立刻模式API(Immediate Mode API)。

保留模式
Direct3D保留模式API被设计为用以针对手工操纵的场景和物体提供高级别的服务。它被设置在立即模式的顶部,并且具有一个内置的几何引擎,所以你不需要保留物体的数据库或是它们的内部结构。此引擎也支持一些例如关键帧(key-frame)动画的性能。仅仅只需要少许调用,你就能够在场景中载入预先定义好的物体以及处理。
优点:你不需要对3-D编程了解太多,所以你可以更快上手进入到编程状态,并且你能够通过编写少量的代码来建立明确的3-D效果。
缺点:比起立即模式,保留模式速度不够快,也不够灵活。
如果你仅仅只需要在你的应用程序中添加标准的3-D功能,或是没有时间来开发你自己的复杂的几何函数,则保留模式能更好的满足你的需要。

立即模式
Direct3D立即模式API提供同着色和硬件加速器之间的底层的,设备无关的通信。对于那些具有相当多3-D编程经验的开发者,或是对于那些已经存在大量的3-D代码,而希望将它们移植到Direct3D上的开发者来说,立即模式是较好的选择。
优点:你可以因此进行你自己所希望的场景着色和场景管理。这将给你的应用程序带来更多的灵活性,并且一旦你按照你独特的需要对之进行优化,你就可能得到比较好的性能。
缺点:你必须自己来完成你的场景的着色和场景管理,并且你将需要了解更多有关3-D编程的知识。
如果你是一个热门游戏程序员,对编制高性能,更加酷的3-D效果更感兴趣,并且你有你自己的一套开发函数来完成它,那么你可能会嘲笑我们所提供的这套想法是一个优柔寡断的,容易使用的,高级别的接口,那么立即模式中将会到处写着你的名字。

Direct3D特性以及APIs
Direct3D的主要特性在下表中列出。




  

指的是一个图形API


Direct3D包括在DirectX 中


可以去下载一个DirectX 9.0 c


地址:

http://www.skycn.com/soft/4297.html

软件
前端设计
程序设计
Java相关