如何在Direct3D里面使用GDI

步骤:

1、用D3D的GetBackBuffer得到一个IDirect3DSurface9
2、然后使用IDirect3DSurface9的GetDC接口得到dc
3、使用dc绘图
4、用IDirect3DSurface9的ReleaseDC释放dc

注意:

1、buffer的格式必须是以下几种之一:
D3DFMT_R5G6B5,D3DFMT_X1R5G5B5,D3DFMT_R8G8B8,D3DFMT_X8R8G8B8

2、D3DPRESENT_PARAMETERS 的 Flags需要设置D3DPRESENTFLAG_LOCKABLE_BACKBUFFER

3、GetDC接口在以下情况下会失败:
1)surface已经被锁定了
2)surface对应的dc没有被释放
3)surface包含在一张texture中,而这个texture中的另一个surface已经被锁定了
4)surface存在于default memory pool,并且没有设置dynamic usage flag
5)surface存在于scratch pool

参考文献:

http://www.xmission.com/~legalize/book/download/04-2D%20Applications.pdf

你可能感兴趣的:(如何在Direct3D里面使用GDI)