Direct3d中的矢量文本呈现系统

时间:2011-07-16 20:51:42

标签: c++ vector fonts directx direct3d

有人知道directx中矢量字体的实现吗?

如果不是,有人有一个良好的起点吗?

甚至是Directx中使用基本缩放支持编写的读者的任何示例。

1 个答案:

答案 0 :(得分:1)

直接矢量字体在D3D中不能很好地工作,因为它需要一个中间纹理来保存光栅化数据(顶点或像素),并且需要做更多额外的工作,因此你需要对它们采取一些不同的方法。让他们轻松高效地工作(如果您受到性能限制/关心性能)。你应该使用有符号距离字段(它们非常好地扩展,但如果你的字体很复杂,那么对于缩小比例是很可怕的。硬边缘也不能很好地存储,但这可以通过使用两个通道来存储数据。距离场也允许轻松平滑,粗体,轮廓,发光和阴影),al la valve改进了alpha测试的高级矢量纹理渲染(如果你想这样做,它会毫无疑问地引用关于矢量字体的论文)。它是严格着色器依赖(虽然它可以通过alpha测试在FFP中完成,但在像素着色器中使用smoothstep以最小的开销提供更好的结果),但是除了ps v1之外不需要任何东西。有关该论文,请参阅http://www.valvesoftware.com/publications.html,请参阅阀门源sdk中的着色器以获取完整的实施参考。 (我真的只是使用它构建了一个基于Dx11的文本渲染器,工作得非常好,虽然我使用了一个工具来强制我的sdf,所以我不需要在运行时创建它们。)