初识DirectX9.0

本文深入解析DirectX9.0中的Direct3D模块,介绍其作为底层图形API的作用,如何利用硬件加速功能绘制3D场景,以及Direct3D的设备类型、表面管理和交换链的概念。同时,探讨了深度缓存的功能和顶点运算的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DirectX9.0的学习笔记

Direct3D是一套底层图形的API(应用程序编程接口)。
作用:利用这个API,可以借助硬件加速功能绘制3D场景。
Direct3D是一个应用程序和图形设备的交互中介。

Direct3D的抽象概念包括:devices, swap chains和resources。

Direct3D有4种device type。

用D3DDEVTYPE定义了设备类型。

(1)HAL(hardware abstraction layer,硬件抽象层):
作用是使硬件加速;
它是一个指示该设备完成某个操作的代码集,一般由该设备的制造厂商完成,Direct3D只管调用;
HAL设备值用D3DDEVTYPE_HAL来定义。
(2)reference:应用程序请求一个reference设备。
(3)null reference:当系统没有装SDK,但是应用程序请求一个reference设备的时候,它就返回一个null reference。
(4)可插拔的软件(Pluggable software);设备通过RegisterDevice设备方法提供。

在代码中,我们通常用IDirect3DSurface9来描述表面。在该接口中,提供了几种直接从表面读取和写入数据的方法,以及一种获取表面相关的信息的方法。该接口中比较重要的是:
(1)LockRect 该方法用于获取指向表面存储区的指针。通过指针运算,可以对表面的每一个像素进行读写操作。
(2)UnlockRect 如果调用了LockRect方法,而且已执行完访问表面的存储区的操作,必须调用该方法以解除对表面存储区的锁定。
(3)GetDesc 该方法可以通过填充结构D3DSURFACE_DESC来获取该表面的描述信息。

Direct3D维护着一个表面集合,该集合通常由两个到三个表面组成,该集合表面被称为交换链(Swap Chain)。一般用IDirect3DSwapChain9来表示。一般情况下,交换链由两个表面组成,一般分为前台缓存和后台缓存,前台缓存在监视器中正在显示,而后台缓存则在绘制下一幅要在监视器中显示的话面,等到了时间,前台缓存变成了后台缓存,加载下一副话面,后台缓存变成前台缓存,将原本在后台缓存中的话面在监视器中显示。
深度缓存:是一个只含有特定像素的深度信息而不含图像数据的表面。
简单的来说,就是在多个图像出现时,判断谁在前,谁在后,谁把谁挡住了的一个功能。一般显示离摄像头近的像素。
顶点运算:顶点运算有两种方式,一种是软件运算,一种是硬件运算;一般情况下,首先考虑硬件运算,因为硬件运算有加速功能,比软件运算快。首先要考虑采用硬件运算,判断该硬件支不支持,而软件运算全部支持。
Direct3D的初始化:
(1)获取IDirect3D9的指针
(2)检查设备性能(D3DCAPS9)
(3)初始化D3DPRESENT_PARAMETERS结构的一个实例。
(4)利用已经初始化的D3DPRESENT_PARAMETERS结构构建IDirect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值