回答
直接矢量字体在D3D中无法正常工作,因为它需要一个中间纹理来保存栅格化数据(垂直或像素)并需要做更多的额外工作,因此您需要一种方法让它们有点不同让他们轻松高效地工作(如果您的表现受到限制/关心表现)。你应该使用带符号的距离字段来表示它(它们可以很好地扩展,但是如果你的字体很复杂,可能会缩小比例,硬边也不能很好地存储,但是这可以通过使用两个通道来存储数据,距离场也允许简单的平滑,粗体,轮廓,发光和阴影),阿尔拉阀门的改进的阿尔法测试先进的矢量纹理渲染(如果你真的想这样做的话,这意味着矢量字体的纸张)。它非常依赖着色器(尽管它可以通过alpha测试在FFP中完成,但在像素着色器中使用smoothstep提供了更好的结果,且开销最小),但除了ps v1之外,其他任何东西都不需要任何东西。请参阅文件http://www.valvesoftware.com/publications.html,参见阀源sdk中的着色器以获取完整的实现参考。 (我原意使用这个构建了一个基于Dx11的文本渲染器,奇妙地工作,虽然我使用了一个工具来强制我的sdf,所以我不需要在运行时创建它们)。
+1为距离字体的链接(认真的人,_使用这个stuff_),但-1在说D3D不能使用矢量字体。矢量字体意味着使用三角形绘制字体,而不是栅格化它们。你必须做的是为每个字形生成一个网格,而不是修改字形。这不是一个简单的过程,但它确实可行。 –
@nicol:似乎你抓到我时,我还在修理它并充实它。更新为在D3D中使用矢量字体更清楚一点。 – Necrolis
- 1. Direct3D渲染错误纹理
- 2. 使用direct3D渲染视频
- 3. Direct3D矢量输出?
- 4. Android Studio中的矢量渲染不良
- 5. 渲染<canvas>文本中arbitarily形矢量容器
- 6. OpenGL L系统渲染
- 7. 在OpenGL中渲染矢量图形?
- 8. 渲染android系统中的WebView
- 9. 什么系统组件负责在android中渲染文本?
- 10. Direct2D与Direct3D的数字视频渲染
- 11. 在CAVE系统中分布式渲染
- 12. 将视频渲染到Direct3D 9.0c纹理
- 13. Direct3D 11初始化和渲染部分
- 14. Direct3D或XNA渲染自定义台球
- 15. Qt:QOpenGLWidget中的文本渲染
- 16. chrome中的文本渲染
- 17. Ajax升级系统渲染错误
- 18. Rails Ajax渲染部分(投票系统)
- 19. 更改系统中所有窗口文本框的渲染机制
- 20. 在LWJGL中渲染文本
- 21. 在AS3中渲染文本
- 22. 在渲染前测量文本长度
- 23. 在Windows应用商店中渲染Direct3D中的XAML
- 24. 运行系统中的精灵渲染器中的Unity Change sprite
- 25. Rspec的渲染文本
- 26. 优化的粒子系统Direct3D 9
- 27. Unity3d,多个渲染目标 - Direct3D/OpenGl中的不同行为
- 28. 统一脚本:渲染精灵组件
- 29. XNA中的窗口系统渲染策略(RenderTarget性能)
- 30. 将系统输出转换成矢量
也许您在寻找DirectWrite? http://msdn.microsoft.com/en-us/library/dd371554%28v=vs.85%29.aspx – RocketR
不幸的是,我不得不为此任务使用direct3d。 – thirsty93
我真的只是想找一种方法在directx中使用干净的高质量可缩放字体。它们可能相当密集cpu,因为我不会渲染任何其他东西。但我需要能够用文本填充屏幕。 – thirsty93