【杂记】Directx11 Font

DX11写字体用三种方法,GDI,D2D,Directx write

 

这里介绍D2D  因为DX11是不能使用D2D的(这里我也不知道为什么)

但我们可以通过一个sharing surface 的概念,先用DX10.1来使用D2D,把渲染目标分享,再用DX11来渲染

Step1:先通过IDXGIFactory1 接口来设置一个容器

创建10.1设备和11的设备

创建贴图,必须是BGRA格式

创建D3D11 KeyedMutex(为了10.1和11设备都能使用贴图,相当于一个互斥锁)

这个锁有两个功能,一个是获得,一个是释放(保证两个设备知道彼此什么时候在用贴图)

因为10.1设备不能直接创建一个贴图的互斥锁,所以我们用11来创建,然后创建一个shared resource Object(有些专业概念我也不知道怎么翻译,就直接拿来用吧),这个object是存储一个指向贴图的指针

创建一个IDXGISurface1 object指向刚才的shared resource Object。(这个surface是用来获得互斥锁的)

初始化D2D

先设置D2D的属性,然后创建D2D Render Target,就是上面的surface

通过CreateDxgiSurfaceRenderTarget() 得到D2D的render target object(这个在下面会用的到)

用上一行得到的Object创建一个画刷(这样才能在屏幕上写字)( CreateSolidColorBrush() method of the ID2D1RenderTarget interface

初始化DirectxWrite(用来渲染文字,感觉好多功能都是类似的,可能还是我理解不到位)

要创建DW,和其他一样要先创建Blahblah一堆

设置DW的文本格式和对准(具体的函数这里就不列出来了,要学习的朋友们去我贴出来的网页看吧)

Step2:

创建shader resource(和上面提到的不是一个东西),这个是用来做纹理贴图的

(可以把D2D当成是一个画家工具包,把DW当成是一个画家)

原文地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值