(Direct3D 9) 呈现场景简介

演示 API 是一组方法,用于控制影响用户在监视器上看到的内容的设备状态。 这些方法包括设置显示模式和用于向用户显示图像的每帧一次方法。

若要了解演示文稿 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::GetGammaRampIDirect3DDevice9::SetGammaRamp 方法进行操作。

呈现场景