Reiks的技术博客

C/C++/STL/Algorithm/D3D
posts - 17, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

如何在Direct3D里面使用GDI

Posted on 2011-05-19 13:45 reiks 阅读(1362) 评论(2)  编辑 收藏 引用 所属分类: Direct3D

步骤:

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

Feedback

# re: 如何在Direct3D里面使用GDI  回复  更多评论   

2011-05-19 16:14 by K.V
很想知道,为什么要在D3D里使用GDI?

# re: 如何在Direct3D里面使用GDI  回复  更多评论   

2013-12-23 10:17 by herman
为什么我用IDirect3DSurface9的GetDC接口得到dc,然后画矩形框显示不出来?
获取dc是成功的

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理