窗口已经建立好了,现在就该往里填充内容了。
这里用到了Surface,surface是DirectX集成的一个东西,可以利用它来存储图像,在内存存储的时候是连续的。
先介绍两招Surface:Display Buffer和Offscreen surface。
Display Buffer又分为front buffer(显示在屏幕上)和back buffer(后台的缓冲区,绘制所在的地方)
back buffer是进行绘制的地方,绘制完成的时候,就是用Present来与front buffer进行交换。如果试图直接在front buffer中进行绘制的话,有可能会造成画面的闪烁和断裂。所以当绘制的时候一定要先在back buffer中进行绘制。
创建backbuffer:当创建Device时,向CreateDevice函数中传入BackBufferCount值来创建back buffer。
offscreen buffer是用来存储程序可能用到的图像的地方。
1.创建offscreen buffer:这里又引入了一个对象Direct3DSurface
HRESULT CreateOffscreenPlainSurface(
UINT width,
UINT height,
D3DFORMAT Format, //像素格式