C ++ D3DX字体和转换(需要d3d9和d3d10解决方案)

时间:2009-07-01 15:16:25

标签: c++ direct3d text-rendering d3dx

我希望以考虑当前变换和类似设置的方式渲染字体,尤其是投影变换和视口。

我认为最好的方法是使用屏幕外表面来渲染文本,然后将表面渲染到我真正想要文本的位置。

但是我不确定这个解决方案的许多方面。

  • 这是最好的解决方法吗?

  • 是否有更好的免费字体渲染器可以更好地花费我的时间来允许这样的事情。我看到很多人因各种原因抱怨d3dx字体界面,但从来没有链接到更好的具有unicode功能的渲染器......?

  • 使用某些表面格式和/或表面尺寸是否有任何优势(例如,总是使用尽可能小的表面格式而不是某些标准的大表面格式,这需要额外的步骤来尝试大小... ...

1 个答案:

答案 0 :(得分:1)

是的,渲染到纹理,然后绘制纹理四边形以定位和定位文本将是实现此功能的最简单方法。

对于D3DX文本渲染器,它实际上取决于您使用的SDK。 DirectWrite(仅适用于Windows 7和Vista)将为需要高质量文本呈现的应用程序提供更高质量的文本呈现方法,并且可以与Direct3D互操作。

您当然可以进行自己的光栅化。有些字体光栅化引擎是开源的,可以根据需要重新利用,但我们在这里谈论大量的编码,以获得可能无法区分以保证开发费用的好处。

话虽如此,只要您可以访问字形轮廓作为曲线数据,就可以使用Direct3D和着色器提供全新的替代方案。我们的想法是使用着色器栅格化文本并将曲线定义存储在顶点流和关联的纹理中。尝试查看描述该技术的this paper