【问题标题】:Draw a Text in 3D在 3D 中绘制文本
【发布时间】:2012-09-14 21:11:29
【问题描述】:

我正在尝试弄清楚如何在 3D 中绘制文本。

现在我有两种方法可以在屏幕上显示内容。一种使用通常的 3d 空间来渲染世界,并使用额外的渲染来渲染以预转换方式进行的 HUD。

所以,理想情况下,我想要一种对文本执行相同操作的方法,既可以 3D 渲染字符串(有点像“广告牌”方式),也可以使用预转换方式(就像我使用 2d 模式一样)。

我唯一能找到的是使用“Mesh.FromText”,但它似乎不是我需要的。哦,还使用 ​​spritebatch 将文本绘制到纹理,然后在 3D 中使用此纹理和 alpha 混合,但这似乎又是一种糟糕的方式......

有什么想法吗?

【问题讨论】:

    标签: c# 3d xna text-rendering


    【解决方案1】:

    您可以使用自定义效果在 3D 空间中使用SpriteBatch 进行绘制。 This blog post有详细信息。

    就像将一个带有正确转换的效果(如BasicEffect)传递给SpriteBatch.Beginthis one)的适当重载一样简单。

    (文本由透明精灵组成 - 因此在 3D 中使用透明绘图的所有常见注意事项都适用:对不透明的 Z 缓冲场景进行排序和绘制,或使用 alpha 测试。)

    【讨论】:

    • 对不起,我无法理解 :(
    • 什么,具体是您遇到的问题? (如果这是一件大事,也许可以提出一个新问题?)
    • 好吧,不幸的是,几乎所有事情,因为没有你描述的实际技术的示例代码...... :(
    • 你知道如何使用BasicEffect在3D中绘制东西吗?如果没有,你需要去学习如何。基本思想是设置适当的世界/视图/投影矩阵,以便您的 3D 点最终出现在 2D 屏幕上的正确位置...然后查看blog post I linked 中的最后一段代码 - 注意它是如何设置用于 2D 绘图的世界/视图/投影矩阵。您所要做的就是为 3D 绘图设置适当的矩阵。然后照常使用SpriteBatch
    • 好的,我想我明白了,不过正如你所说,我需要先学习如何做这些事情。但是谢谢你的解释:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2021-07-21
    • 2012-11-27
    • 2022-11-10
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多