(Direct3D 9) 呈现场景简介
演示 API 是一组方法,用于控制影响用户在监视器上看到的内容的设备状态。 这些方法包括设置显示模式和用于向用户显示图像的每帧一次方法。
- IDirect3DDevice9::Present
- IDirect3DDevice9::Reset
- IDirect3DDevice9::GetGammaRamp
- IDirect3DDevice9::SetGammaRamp
- IDirect3DDevice9::GetRasterStatus
若要了解演示文稿 API,必须熟悉以下术语。
- 前端缓冲区。 由图形适配器转换并在监视器或其他输出设备上显示的内存矩形。
- back buffer。 其内容可以提升到前缓冲区的图面。
- 交换链。 可以串行呈现给前缓冲区的后台缓冲区的集合。 通常,全屏交换链通过翻转设备驱动程序接口 (DDI) 呈现后续图像,窗口交换链显示带有 blitting DDI 的图像。
由于 Direct3D 9 有一个交换链作为设备的属性,因此每个设备始终至少有一个交换链。 IDirect3DDevice9 接口具有一组操作隐式交换链的方法,并且是交换链自己的接口的副本。 应用程序可以创建其他交换链;但是,对于典型的单窗口或全屏应用程序,这不是必需的。
在 Direct3D 9 中不直接公开前端缓冲区。 因此,应用程序无法锁定或呈现到前端缓冲区。 有关详细信息,请参阅 访问颜色前缓冲区 (Direct3D 9) 。
注意
DirectX 7 提供了许多一起调用的演示 API。 一个很好的示例是 IDirectDraw7::SetCooperativeLevel、IDirectDraw7::SetDisplayMode 和 IDirectDraw7::CreateSurface 序列。 此外,IDirectDrawSurface7::Flip 和 IDirectDrawSurface7::Blt 方法向监视器发送呈现的帧信号。 Direct3D 9 将这些 API 组折叠为两个main方法:Reset 和 Present。 重置子集 SetCooperativeLevel、SetDisplayMode、CreateSurface 以及要翻转的一些参数。 演示子项翻转和 blit 的演示用法。
调用 IDirect3D9::CreateDevice 表示设备的隐式重置。 Direct3D 9 API 没有主图面的概念;不能创建表示主图面的对象。 它被视为设备的内部属性。
Gamma 渐变与交换链相关联,并使用 IDirect3DDevice9::GetGammaRamp 和 IDirect3DDevice9::SetGammaRamp 方法进行操作。
相关主题