问题标签 [spritefont]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4770 浏览

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

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

由于这是一个仅限 Windows 的应用程序(不打算移植它),我将可以访问所有字体,就像在普通的旧 WinForms 应用程序中一样,我相信使用Graphics.DrawString(甚至TextRenderer)时渲染质量会比使用 sprite 字体好得多。

此外,似乎性能可能会更好,因为SpriteBatch.DrawString需要在每次迭代中“渲染”整个文本(即分别发送每个字母的顶点),而通过使用位图我只做一次,所以在CPU端。

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

[更新]

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

0 投票
2 回答
1738 浏览

c# - 错误 - SpriteFont 未实现

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

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

0 投票
1 回答
552 浏览

fonts - What is a .Spritefont file, and how do I create it?

I have looked for them for half an hour. I have a .TFF font, I have a .png spritesheet, I have everything I need to be able to write down any sort of string, but apparently I need to load content in XNA as userfont = Content.Load<SpriteFont>

And this .SpriteFont filetype I can't find. Help!

0 投票
1 回答
705 浏览

scrollview - Monogame 窗口 - 使文本视图可滚动

我正在尝试在单机游戏窗口中做一个应用程序。我有一个长文本要显示在屏幕上。我尝试使用 spriteBatch.Drawstring 在屏幕上渲染它,在一定程度上是成功的。但是,文本不适合所需区域。我已按照教程进行操作。我需要一个垂直滚动来实现我想要的区域内的整个文本。任何人都可以提出一些帮助。这是我当前的代码:

和内部绘图功能:

0 投票
1 回答
1095 浏览

c# - SpriteFont 不适用于 MonoGame

无论出于何种原因,无论发生什么,或者我改变了什么,我总是会得到这个错误。

我将内容文件夹中的 TopBarFont.spritefont 设置为内容,并始终像我的所有其他资产一样复制到输出目录。

我的 spritefont 文件看起来像这样,

我看到其他一些帖子只使用 2d 纹理并绘制它,但没有。这默认使用 DrawString 的全部目的。

0 投票
0 回答
33 浏览

ios - Spritefont 文件不绘制 Monogame

我在 Mac 上使用 Xamarin 并且我的 spritefonts 没有在 IOS 上绘图。尽管所有文件都加载到 ContentManager 中,但它们似乎根本没有出现。有谁知道这是什么解决方案?

0 投票
1 回答
216 浏览

c# - MonoGame/XNA 中的 Light SpriteFont 颜色质量低

我正在创建一个关于互联网安全的游戏,但是当使用 SpriteFont 时,白色或浅蓝色等浅色会变得非常粗糙且质量低下。另一方面,黑色非常清晰。我想知道是否有办法解决这个问题?

带有黑色 SpriteFont 的图像

带有白色 SpriteFont 的图像

0 投票
1 回答
354 浏览

visual-studio-2015 - 在 VS2015 的 XNA4 内容项目中没有加载 SpriteFont 的选项

我在 XNA Content 项目中找不到任何加载新 SpriteFont 的选项。

这是我的屏幕:

在此处输入图像描述

我从这里下载了 Visual Studio 2015 的 XNA4.0 刷新更新https://mxa.codeplex.com/releases/view/618279

谁能帮我?

0 投票
2 回答
1954 浏览

c# - 如何在monogame中用spritefont绘制每个字符

我是monogame的新手,我正在尝试制作一个.spritefont文件以便用我选择的字体绘制字符串。

带有英文字符的字符串可以在屏幕上很好地显示,但我希望绘制多种语言的字符串,例如日语和中文。

因此,我尝试在多语言字体“Microsoft JhengHei”中加载所有字符。

字体的第一个字符是!(U+0021),最后一个字符是○(U+FFEE).

但是当我试图编译程序时,编译器给了我一个错误:

.../Content/MyFont.spritefont : 错误 : Importer 'FontDescriptionImporter' 出现意外失败!

System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.ArgumentException: CharacterRegion.End 必须大于 CharacterRegion.Start

在 Microsoft.Xna.Framework.Content.Pipeline.Graphics.FontDescription.set_CharacterRegions(CharacterRegion[] 值)

当我将其更改为&#xFFEE;&#x5FEE;MSBuild卡住并需要永远继续内容。

代码MyFont.spritefont如下:

我搜索了几天的解决方案,但徒劳无功,感谢任何帮助。

0 投票
2 回答
1327 浏览

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

我在使用DirectX::SpriteFont/时遇到问题DirectX::SpriteBatch(来自 DirectXTK;与此处讨论的问题完全相同:使用 SpriteFont 类绘制文本时出现问题)。

没有调用SpriteBatch::Begin(),您将看到一个带纹理SpriteFont::DrawStringSpriteBatch::End()立方体在空间(笼子)中旋转。通过调用所描述的函数,您将只能在左上角看到每秒帧数,但看不到旋转立方体。

我按照教程从github DirectXTK 上Chuck WalbournSpriteFont的教程,并结合了使用和渲染原始 3D 对象(一个简单的三角形)绘制字符串的 2 个教程。在此示例中,我将看到测试字符串在三角形上绘制。但我不明白为什么我的示例中的旋转立方体在使用SpriteFontDirectXTK 类绘制文本字符串时不可见,我什至找不到根本原因。

像素着色器文件(PixelShader.hlsl):

顶点着色器文件(VertexShader.hlsl):

重现问题:我正在使用 Visual Studio 2015 社区版。我将 DirectXTK (.lib) 和 DirectXTex ( WICTextureLoader.cpp/.h, DDSTextureLoader.cpp/.h, .lib) 添加到我的项目中。立方体的图像是带有 alpha 的 .png。

注意:我创建了这个重复的问题,

避免... 寻求帮助、澄清或回应其他答案。

关于另一个问题。