- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
?这一章我们首先将描述direct3D的通用的架构,并且讨论Direct3D与windows GDI的联系,然后再引入Direct3D的一些抽象概念:devices, swap chains , surfaces和resources。 接下来,我们将描述IDirect3D接口,这个接口揭露了系统里面的图形devices。???
??? 当一个图形应用程序初始化的时候,它首先probe系统里面的图形设备,然后再选择一个合适的设备来满足应用程序的display需求。这个过程称作“device enumeration”。IDirect3D使枚举设备过程非常容易,能够让我们检查出现在系统里面的设备是否符合我们的需要。
??? 每一个monitor都是由一个adapter驱动的,它能够支持很多种显示模式和刷新率。每个adapterd都拥有运行在windowed 和exclusive模式下的的硬件和软件设备对象。应用程序列举出每个adapter上的可用的设备,检查他们的capability和支持的显示模式,找到一个合适的设备。当这个设备找到之后,应用程序需要检查这个设备是否支持render target 格式,resource格式以及multisampling。
?? Direct3D能够枚举默认adapter上的所有设备或者所有adapters上的所有设备。 多个monitor的系统开始很通用,应用程序能充分利用多个monitor的附加的显示空间。
?
Direct3D Architecture
???? Direct3D是windows系统里面与GDI相同层级的组件。Direct3D 设备驱动直接与图形硬件打交到,并且可以直接与显卡驱动程序通信。Direct3D的抽象概念包括devices, swap chains和resources。 设备封装了硬件渲染操作方法,设备属性控制渲染行为并且提供渲染信息,设备方法用于执行渲染。设备至少包括一个swap chain和多个用于渲染的资源。资源存放在设备硬件里或者其附近,用于提供图形渲染所需要的特定数据。Direct3D提供的资源包括场景几何体(顶点和索引)以及外观数据(图片,纹理和volumes)。
???? surface也是一种资源,它包含一个矩形集合的像素数据,如color, alpha, depth/stencil以及纹理信息。一个swap chain 包含了一个和多个back buffer surface。设备的render target也是back buffer surface,并且还可能携带一个depth/stencil? surface。
???? 所有的back buffer都是合理的render target,但是并不是所有render target都是back buffer。我们也可以让一个纹理surface作为render target,来实现动态的渲染效果。
???? 为了获得设备对象,Direct3D提供了设备枚举和创建的方法。所有的其他对象就可以由设备来创建。应用程序首先获取runtime的接口,选择和创建一个设备。接着使用设备创建其他的资源对象。
?
Windowed and Exclusive mode
?
???? Direct3D 设备两种不同的操作模式:windowed 和exclusive。在windowed下,图形渲染在桌面窗口的客户端区域进行。Direct3D 将跟GDI一起工作,使用::stretchBlt方法在windows的客户端区域present一个back buffer。在Exclusive模式下,Direct3D直接调用显卡驱动,而并不通过GDI。当一个exclusive模式的应用程序运行的时候,其他应用程序都不可以再访问显卡了。
?
Devices Type
?
???? 每个adapter支持几种类型的设备。Direct3D支持的三种类型:包括HAL 设备,reference设备以及可插拔的软件设备。D3DDEVTYPE定义了设备类型。
typedef enum _D3DDEVTYPE
{
????? D3DDEVTYPE_HAL = 1,
????? D3DDEVTYPE_NULLREF = 4,
????? D3DDEVTYPE_REF = 2,
????? D3DDEVTYPE_SW = 3} D3DDEVTYPE;
???? HAL(hardware abstraction layer)设备使用了图形渲染的硬件加速,所以是速度最快的设备类型。reference设备只有在SDK的安装版本里面才有,它包括了对整个图形的pipeline进行软件实现。这个设备虽然速度很慢,但是它易于图形应用程序的调试。null referece
文档评论(0)