Direct3D Surfaces (Direct3D 9)
图面表示显示内存的线性区域,通常驻留在显示器卡的显示内存中,尽管图面可以存在于系统内存中。 Surface 由 IDirect3DSurface9 接口管理。
- 前缓冲区。 由图形适配器转换并显示在监视器上的内存矩形。 在 Direct3D 中,应用程序永远不会直接写入前端缓冲区。
- Back Buffer。 应用程序可以直接写入的内存矩形。 后台缓冲区永远不会直接显示在监视器上。
- 翻转表面。 将后台缓冲区移动到前缓冲区的过程。
- 交换链。 可以串行呈现给前缓冲区的一个或多个后台缓冲区的集合。
获取 Surface
通过调用以下任一方法创建图面:
Surface 格式确定如何解释 Surface 内存中每个像素的数据。 Direct3D 使用 D3DSURFACE_DESC 结构的 D3DFORMAT 成员来描述图面格式。 可以通过调用 GetDesc 方法检索现有图面的格式。
创建图面后,可以通过调用以下任一方法获取指向它的指针:
- GetBackBuffer
- GetCubeMapSurface
- GetDepthStencilSurface
- GetFrontBufferData
- GetRenderTarget
- GetSurfaceLevel
使用 IDirect3DSurface9 接口,可以通过 UpdateSurface 方法间接访问内存。 此方法允许将像素的矩形区域从一个 IDirect3DSurface9 接口复制到另一个 IDirect3DSurface9 接口。 Surface 接口还具有直接访问显示内存的方法。 例如,可以使用 LockRect 方法锁定显示内存的矩形区域。 在处理完图面上锁定的矩形区域后,调用 UnlockRect 非常重要。
其他 Surface 主题
详细了解如何将表面与以下任何主题配合使用:
- Surface 格式 (Direct3D 9)
- 什么是交换链? (Direct3D 9)
- 宽度与间距 (Direct3D 9)
- 翻转 Surface (Direct3D 9)
- 页面翻转和回缓冲 (Direct3D 9)
- 复制到 Surfaces (Direct3D 9)
- 复制 Surface (Direct3D 9)
- 直接访问 Surface 内存 (Direct3D 9)
- 专用 Surface 数据 (Direct3D 9)
- Direct3D 9) (Gamma 控件
相关主题