标签: spritefont

Monogame使用Graphics.DrawString(而不是SpriteBatch.DrawString)渲染文本

使用Graphics.DrawString将一组(相当静态的)文本渲染到屏幕外位图,将其转换为Texture2D一次,然后简单地调用SpriteBatch.Draw,而不是使用内容管道并使用渲染文本,是否有任何缺点SpriteFont?这基本上是一页文本,绘制成"纸张",但用户也可以选择调整字体大小,这意味着我必须包含不同大小的spritefonts.

由于这是一个仅限Windows的应用程序(不打算移植它),我可以访问所有字体,例如普通的WinForms应用程序,我相信使用Graphics.DrawString(甚至TextRenderer)使用精灵字体时渲染质量会好得多.

此外,似乎性能可能更好,因为SpriteBatch.DrawString需要在每次迭代中"渲染"整个文本(即分别为每个字母发送顶点),而使用位图我只做一次,所以它应该稍微减少工作量CPU方面.

  1. 我没有看到任何问题或缺点吗?
  2. 是否可以使用spritefonts获得alpha混合文本?我已经看过周围提到的Nuclex框架,但它并没有被移植到Monogame AFAIK.

[更新]

从技术方面来看,它似乎比通过精灵字体更好地完成文本渲染.如果它们是水平渲染的,我甚至会得到ClearType.可能存在的一个问题是字体的spritesheets(可能是?)在纹理内存方面比为文本页面创建单独的纹理更有效.

drawstring monogame spritefont spritebatch

13
推荐指数
1
解决办法
2665
查看次数

模糊的SpriteFont on monogame(Win8)

我有一个非常奇怪的问题,我试图在屏幕上打印一个简单的spritefont,但精灵变得非常模糊......

我已经使用内容管道从VS 2010加载spritefont以形成xnb文件,然后在monogame下将其加载到VS2012

public void DrawText(int x, int y, string s)
    {
        _color = Color.White;
        _rotation = 0.0f;
        _size = 1.0f;
        _spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
        _spriteBatch.DrawString(_spriteFont, s, new Vector2(x, y), _color, _rotation, new Vector2(), _size, SpriteEffects.None, 1.0f);
        _spriteBatch.End();
    }
Run Code Online (Sandbox Code Playgroud)

仍然图像变得非常模糊..我不知道为什么......

我在谈论这样的事情

在此输入图像描述

有谁知道为什么会这样?我已经搜索了所有内容,我得到的最接近的答案是,如果精灵或spritefont位置是一个浮点数(非精确整数),结果将被全局化......但这不是这里的情况

干杯!

我上传的XNB精灵字体 https://skydrive.live.com/redir?resid=50E25A0EEED51C3C!241&authkey=!AAvw-i5OtipT8fo 如果有人有兴趣尝试此

c# xna-4.0 monogame spritefont

5
推荐指数
1
解决办法
762
查看次数

如何实现自动换行?

XNA有Spritefont类,它有一个MeasureString方法,可以返回a的宽度和高度string.我试图了解如何创建一个方法,该方法将有效地返回Environment.Newline插入在正确位置的字符串,以便如果适合某个宽度和高度(Rectangle用作参数).

c# xna word-wrap spritefont measurestring

4
推荐指数
1
解决办法
2975
查看次数

如何在XNA中绘制特殊字符?

我想通过使用方法在XNA中绘制特殊字符,如:"π,Ω,θ,ξ" SpriteBatch.DrawString(),但我得到一个例外,说这些字符在SpriteFont文件中不可用.这有什么解决方案吗?

c# xna xna-4.0 c#-4.0 spritefont

3
推荐指数
1
解决办法
4567
查看次数

XNA - 新安装的字体不起作用?

所以最近我在我的电脑上安装了一个新字体(.ttf),以便我可以在我的XNA游戏中使用它.这是正确的字体类型,我拼写正确,但XNA找不到它.关于可能导致这种情况的任何想法?

这是错误:无法找到字体系列"Bloody".请确保安装了所请求的字体,并且是TrueType或OpenType字体.

但是这个字体安装正确,拼写正确,并且是TrueType字体.

c# fonts xna spritefont

3
推荐指数
1
解决办法
2020
查看次数

错误 - SpriteFont未实现

我正试图在Monogame程序中绘制文本.我想使用SpriteFont来执行此操作,但在尝试加载SpriteFont时出现以下错误.

//Here I try to load the SpriteFont
//It is kept in the "Content/fonts" folder, with "Content" as the Content.RootDirectory
Font = Content.Load<SpriteFont>("fonts/SpriteFont1");

//I then get this error
An unhandled exception of type 'System.NotImplementedException' occurred in MonoGame.Framework.dll
Additional information: The method or operation is not implemented.
Run Code Online (Sandbox Code Playgroud)

SpriteFont1构建操作设置为"内容",复制到输出目录为"始终复制".SpriteFont1.xnb文件位于Content文件夹中,具有相同的设置.如何修复错误以便我可以加载SpriteFont?

c# monogame spritefont

2
推荐指数
1
解决办法
1711
查看次数

DirectX::SpriteFont/SpriteBatch 阻止 3D 场景绘制

DirectX::SpriteFont我在使用/时遇到问题DirectX::SpriteBatch(来自 DirectXTK;与此处讨论的问题完全相同:Problems while Drawing text using the SpriteFont class)。

void DrawScene(void)
{
    HRESULT hr;

    float bgColor_a[4] = { 0.0f, 0.4f, 0.8f, 0.0f };

    g_pDeviceContext->ClearRenderTargetView(g_pRenderTargetView, bgColor_a);
    g_pDeviceContext->ClearDepthStencilView(g_pDepthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);

    XMMATRIX cameraProj = XMLoadFloat4x4(&g_camera._cameraProjection);
    XMVECTOR pos = XMLoadFloat3(&g_camera._pos);
    XMVECTOR target = XMLoadFloat3(&g_camera._target);
    XMVECTOR up = XMLoadFloat3(&g_camera._up);
    XMMATRIX cameraView = XMMatrixLookAtLH(pos, target, up);
    XMMATRIX worldBox2 = XMMatrixIdentity() * (XMMatrixTranslation(2.0f, 0.0f, 0.0f) * XMMatrixRotationY(XMConvertToRadians(g_rotBox2)));
    XMMATRIX wvp = worldBox2 * cameraView * cameraProj;
    XMMATRIX transposeWvp = XMMatrixTranspose(wvp); …
Run Code Online (Sandbox Code Playgroud)

c++ 3d directx-11 spritefont

1
推荐指数
1
解决办法
1561
查看次数