问题标签 [sdl-ttf]

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 投票
1 回答
708 浏览

c - TTF_OpenFont 第 N 次尝试失败

我正在尝试使用 SDL_ttf 在 C 中制作游戏,以在每次刷新显示时显示分数。代码如下所示:

当我启动游戏时,一切正常,但一段时间后游戏崩溃并出现以下错误:

我尝试了不同的字体,但我仍然有这个问题。然后我在游戏的主循环中使用了一个计数器,发现游戏总是在第 1008 次之后崩溃,无论我希望它以何种速度运行(在蛇中,当你得分时,一切都会变得更快)。

我不知道问题出在哪里,也不知道错误消息到底是什么意思。

如果您有任何想法,或者我的问题表述不当,请告诉我。我看了几个论坛,没有找到与我的案例相对应的东西,我现在可以使用任何帮助!

提前致谢

0 投票
1 回答
989 浏览

c++ - SDL2访问冲突多个窗口

我正在开发需要在多个监视器上具有多个窗口的 SDL2 应用程序。使用 SDL_ttf 库绘制字符串时出现访问冲突。我还应该提到,应用程序正在单独的线程中打开窗口,并且如果没有使用 SDL_ttf 则可以正常工作。使用 SDL_ttf 时出现异常:

此函数中发生访问冲突:

SDL_CreateTextureFromSurface(renderer, textSurface); 发生异常

这是来自 Visual Studio 的堆栈跟踪:

我做错了什么还是 SDL_ttf 或 SDL2 不能在多个线程上工作?

还有另一种在 SDL2 中绘制字符串的方法吗?

谢谢!

编辑:

添加现有代码的一部分:

线程函数:void ClientWindows::WindowThread(int i) { AppWindow* rWindow = new AppWindow(i * 1024, 0); Windows.push_back(rWindow); rWindow->InitScreen(); }

启动图形功能:

客户端窗口构造函数:

客户端窗口 startGraphics 函数:

有问题的功能:

0 投票
1 回答
2130 浏览

c++ - sdl_ttf 文本换行

当一串文本过去300时,我希望它下降到一个新行并继续。我读到这就是你的做法,但它不起作用 - 它只是延长了文本。

如何做到这一点?

0 投票
1 回答
1435 浏览

sdl - 如何在带有 SDL2.0 的 pro 文件 Qt Creator 中包含 SDL_ttf

我正在尝试添加一个简单的文本以在窗口中呈现它。但是我有一个问题...

每次控制台向我显示以下答案时:

我不知道这个问题的根源是什么。也许错误出在 .pro 文件中:

main.cpp 中还有另一部分:

更多信息:

  • 软呢帽 20
  • Qt 创作者
  • 用 yum 安装的所有 SDL 包
  • 与可执行文件在同一目录中的 ttf 字体

先感谢您 !

0 投票
0 回答
198 浏览

c++ - 渲染多段文字?

这几天,我一直在做一堆低质量的游戏作为练习,其中大多数只涉及很少甚至没有文字,但这一次,我想做一个真正的游戏,一个非常依赖的模拟游戏在对话中,我呈现文本的方式是这样的:

如您所见,我并不完全使用表面,上面的代码只是我尝试从变量调用文本的示例,但是如果我想让段落出现在对话框中怎么办?就个人而言,我可以制作它们......以这种方式,比如在将表面转换为纹理之后设置矩形,等等,但我有一种强烈的感觉,它在技术上是错误的,可能有一种更短更简单的方法来做它,有吗?你能给我一个样品吗?我真的很感激。

0 投票
1 回答
301 浏览

c++ - SDL 重置曲面

我将一些文本绘制到表面(使用 SDL_ttf),然后我想更改表面上的文本。如果我只是重绘表面,文本不会消失。我已经查看了几个关于如何解决问题的论坛帖子,但我似乎无法弄清楚。特别是我不明白为什么这个解决方案不起作用:(代码很长,所以这只是提供了要点)

在声明的类文件中:

在我的渲染功能开始时:

我对指针和 C++ 的理解(当然是有限的)表明这应该使 box 指向的表面等于 boxCopy 指向的表面。相反,boxCopy 表面变成了 box 的副本。我不知道这行代码如何更改 boxCopy ,但似乎就是这样。

0 投票
1 回答
100 浏览

c++ - 在自动分配的表面上使用 SDL_FreeSurface

我正在开发的游戏中遇到严重的 ram 使用情况。我让它运行并看到它使用了超过 1.5 GB 的内存,从最初的 30 MB 使用。我已经确定了 2 个函数的主要原因,这些函数粘贴在下面。通过研究这个问题,我得出结论,其中一个问题是使用 TTF_RenderText_Blended 创建一个 TTF 表面会创建一个新的表面,而该表面没有被释放。我该如何释放这个自动制作的表面?我不能使用 SDL_FreeSurface,因为我没有表面名称。

我对第二个函数中发生的事情有点困惑。我假设正在发生类似的事情(一个函数被调用并创建了第二个没有被释放的表面),但我不确定是什么原因造成的。这不是一个问题,因为我计划实现此功能的不同版本,它不需要创建任何表面..

TTF 功能:

第二个功能(用于显示精灵):

0 投票
1 回答
1745 浏览

c++ - SDL2_ttf 错误:找不到入口点

因此,在尝试将 sdl_ttf 添加到我的游戏项目时,弹出了一个奇怪的错误:http: //i.imgur.com/RJ32QIs.png

之前一切正常,当我添加 TTF_Init() 时问题就开始了......

这些是我项目中的文件:

主.cpp:

CEngine.h:

CEngine.cpp:

这些是我的链接器设置:http: //i.imgur.com/Gyq5khi.png

它是使用mingw 4.7编译的(更新:用4.8试过,出现同样的错误)

提前致谢。(如果我问的是一个愚蠢的问题,我很抱歉,但我在任何地方都找不到答案。)

0 投票
1 回答
689 浏览

c++ - 使用 SDL_TTF 作为类,内存泄漏

我有一个巨大的内存泄漏,这让我质疑我SDL_TTF的整体实现。

现在我有以下课程

和类抽象了菜单类MainMenuOption每个类都使用构建文本类的参数调用自己的按钮类。

所以现在我的主循环通过SDL_RendererMainMenu->Button->Text 路径向下传递 (gRenderer)。

当我的 Text 类初始化时,它会加载字体,使用TTF_RenderText_SolidButton 类传入的消息设置字体,并将TTF_SetFontStyle文本设置为粗体。

我使用:

我相信它是腹胀SDL_CreateTextureFromSurfaceSDL_RenderCopyEx

我能做些什么来修改这个内存泄漏?我是否忽略了一些公然的东西?

解决方案:

发现/使用 Twinklebear 的 ifnroamtion:

在标题中声明对象时,我声明了纹理并将其设置为等于NULLSDL_Texture* mTexture = NULL;

然后,在绘制函数内部,我检查纹理是否设置为 NULL:

我想做的是在类上抛出一个布尔变量来说明纹理是否需要更新,然后重置纹理。

0 投票
2 回答
259 浏览

c++ - TTF_RenderTextSolid() 返回一个每像素 1 个字节的 Surface?

这段代码:

打印数字 1,表示 TTF_RenderTextSolid 返回的表面每个像素有一个字节。如果我是正确的,它应该是每个像素 4 个字节。有谁知道为什么会这样?