我正在考虑可能将 DirectWrite 用于将在 DirectX 11 版本和 OpenGL 3.1+ 版本中出现的项目。
据了解,DirectWrite 使用位于 Direct3D 10.1 之上的 Direct2D(直到 DirectX 11.1 发布)。这意味着要在 Direct3D 11 中使用 DirectWrite,目前,我必须创建一个 Direct3D 10.1 设备和一个 Direct3D 11 设备,然后在这两个设备之间共享资源,这似乎带来了一些同步开销。另一个问题是我似乎无法通过这种设置将文本直接渲染到 d3d11 后备缓冲区,对吧...?
我也不知道是否有可能在任何实际意义上将 DirectWrite 与 OpenGL 结合起来..?我的猜测不是...
太好了......我也在考虑编写自己的字体渲染器,我希望能够根据它们的贝塞尔样条轮廓来渲染字体,以实现分辨率独立。我知道 GetGlyphOutline() 函数,但根据 MSDN 库,它似乎正在被弃用并且“......不应在新应用程序中使用”。查看 MSDN 上的 DirectWrites 参考页面,我看不到任何方法可以像使用 GetGlyphOutline() 那样在 Bezier 样条信息中获得相同的信息。您可以获得包含在 ID2D1SimplifiedGeometrySink 中的轮廓信息,但我看不到您如何从 ID2D1SimplifiedGeometrySink 中获得纯贝塞尔曲线、控制点、信息,您只能将其用于使用我的 D2D(D3D10.1)进行绘图在这一点上没有那么感兴趣。
有没有办法使用非弃用方法 DirectWrite 或其他方法来获取字体轮廓轮廓?
正如您可能知道的那样,我对 DirectWrite 和 Direct2D 都不太熟悉。我试图弄清楚该采取什么方向。是否值得走 DirectWrite/D2D 道路,或者制作我自己的字体渲染器,或者其他一些绝妙的想法 :)。有什么建议么?
PS我目前正在为Win7平台开发,发布后会迁移到Win8。