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当成是一个画家)

原文地址

猜你喜欢

转载自blog.csdn.net/qq_40947718/article/details/80039066
今日推荐