【发布时间】:2017-11-21 22:55:16
【问题描述】:
我搜索并没有找到这样做的方法。 我想在 HoloLens 应用程序中使用 sharpDX 将标签附加到 3D 对象。
有人知道怎么做吗?
谢谢
编辑: 所以我决定将文本转换为图像,然后将其作为纹理放在由 2 个三角形网格组成的平面上。 所以现在我尝试了这段代码: https://gist.github.com/naveedmurtuza/6600103
但不能包含引用,我该如何解决?
谢谢
【问题讨论】:
我搜索并没有找到这样做的方法。 我想在 HoloLens 应用程序中使用 sharpDX 将标签附加到 3D 对象。
有人知道怎么做吗?
谢谢
编辑: 所以我决定将文本转换为图像,然后将其作为纹理放在由 2 个三角形网格组成的平面上。 所以现在我尝试了这段代码: https://gist.github.com/naveedmurtuza/6600103
但不能包含引用,我该如何解决?
谢谢
【问题讨论】:
几年前我使用 SharpDx 编写了一个游戏,这是它的视频:
https://www.youtube.com/watch?v=tDRmIY6-8Z4
如果我理解正确的话,你想要我用来解释游戏元素的 3D 文本吗?如果是这样,您可能会从以下源代码中获得一些想法:
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
if (drawingReason != DrawingReason.Normal)
return true;
camera.UpdateEffect(Effect);
foreach (var item in Items)
{
Effect.World = Matrix.BillboardRH(item.Target.Position + item.GetOffset(item), camera.Position, -camera.Up, camera.Front);
Effect.DiffuseColor = item.GetColor(item);
SpriteBatch.Begin(SpriteSortMode.Deferred, Effect.GraphicsDevice.BlendStates.NonPremultiplied, null, Effect.GraphicsDevice.DepthStencilStates.DepthRead, null, Effect.Effect);
SpriteBatch.DrawString(Font, item.Text, Vector2.Zero, Color.Black, 0, Font.MeasureString(item.Text) / 2, item.GetSize(item), 0, 0);
SpriteBatch.End();
}
Effect.GraphicsDevice.SetDepthStencilState(Effect.GraphicsDevice.DepthStencilStates.Default);
Effect.GraphicsDevice.SetBlendState(Effect.GraphicsDevice.BlendStates.Opaque);
return true;
}
完整的游戏代码是开源的,可在此处获得: https://github.com/danbystrom/Larv/blob/master/src/factor10.VisionThing/FloatingText/FloatingTexts.cs#L32
【讨论】: