首次记录于博客misskissC:http://blog.csdn.net/misskissc/article/details/9018095
原文地址:http://msdn.microsoft.com/en-us/library/windows/desktop/bb219683(v=vs.85).aspx
初始翻译,多多不准。
表面代表一块线性的显示内存并且通常驻留在显卡的显示内存中,尽管表面能够存在于系统内存中。表面被IDirect3DSurface9接口来管理。
-
Front buffer:一个被图形适配器翻译并且将会被展示给显示器的矩形内存。在Direct3D程序中,用户程序永远都不会对front buffer直接进行写操作。
- Back buffer:用户可以直接对其进行写操作的矩形区域。一个back buffer永远都不会直接被显示到显示器之上。
- Flipping surface:将back buffer转换为front buffer的过程。
- Swapchain:一个或者多个将要被以系列形式呈现为front buffer的back buffer集。
获取一个表面
通过调用以下的任何一个方法来创建一个表面:
表面的格式决定了存在表面内存里面的每像素的数据将会怎么被解释。Direct3D用D3DFORMAT的成员D3DSURFACE_DESC结构来描述表面surface的格式。你可以通过调用GetDesc方法来检索一个已经存在的表面的格式。
一旦一个表面surface被创建,调用以下任何一个方法就可以用一个指针来指向这个表面:
IDirect3DSurface9接口能让用户通过UpdateSurface方法直接访问内存。这个方法能让你从一个IDirect3DSurface9接口赋值一个区域的像素矩阵内存数据到另一个IDirect3DSurface9接口。这个接口也拥有方法来直接访问显存,例如:用户可以使用LockRect方法去锁定一块显存,需要在不需要锁定此块显存时定要调用UnlockRect方法来解锁。
另外的一些表面话题
想要知道更多的如何使用一个表面可以看以下这些话题: