1

我开始学习 SL5 和 3D API。任何人都可以帮助解决此类问题:我正在创建 3D 对象,例如 Cube,并希望在那里显示文本。我怎样才能做到这一点?我可以显示文本还是需要在任何地方使用图像?

谢谢,

迪玛。

4

1 回答 1

0

据我所知,sl5 中没有设计用于在 3d 场景中制作文本的 api。但是,还有另一种方法可以使用名为 spritebatch 的对象来实现。spritebatch 是 xna 中的一个高效类,目前它也已集成到 sl5 中。因此,要显示一些文本,您需要 1)在画布上绘制文本 2)将画布转换为可写位图,以及 3)将此可写位图映射到可以通过将两个三角形设计为平面来自定义的 spritebatch。下面是使用 mytexture 上的 spritebatch 绘制文本的示例。

private void DrawingSurface_Draw(object sender, DrawEventArgs e)
        {
            //Thread.Sleep(50);
            e.GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, new Microsoft.Xna.Framework.Color(0, 0, 0, 0), 1.0f, 0);
            spriteBatch.Begin(e.GraphicsDevice);
            spriteBatch.Draw(myTexture, new Vector2(0, 0), null, Microsoft.Xna.Framework.Color.White);
            spriteBatch.Draw(myTexture, new Microsoft.Xna.Framework.Rectangle(150, 0,100,100), null, Microsoft.Xna.Framework.Color.White);
            spriteBatch.Draw(myTexture, new Microsoft.Xna.Framework.Rectangle(250, 0, 50, 50), null, Microsoft.Xna.Framework.Color.White);
            spriteBatch.Draw(myTexture, new Microsoft.Xna.Framework.Rectangle(150, 150, 200, 200), new Microsoft.Xna.Framework.Rectangle(0, 0, 100, 100), Microsoft.Xna.Framework.Color.White);
            spriteBatch.End();
于 2012-04-11T13:12:57.667 回答