问题标签 [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.
c - TTF_OpenFont 第 N 次尝试失败
我正在尝试使用 SDL_ttf 在 C 中制作游戏,以在每次刷新显示时显示分数。代码如下所示:
当我启动游戏时,一切正常,但一段时间后游戏崩溃并出现以下错误:
我尝试了不同的字体,但我仍然有这个问题。然后我在游戏的主循环中使用了一个计数器,发现游戏总是在第 1008 次之后崩溃,无论我希望它以何种速度运行(在蛇中,当你得分时,一切都会变得更快)。
我不知道问题出在哪里,也不知道错误消息到底是什么意思。
如果您有任何想法,或者我的问题表述不当,请告诉我。我看了几个论坛,没有找到与我的案例相对应的东西,我现在可以使用任何帮助!
提前致谢
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 函数:
有问题的功能:
c++ - sdl_ttf 文本换行
当一串文本过去300
时,我希望它下降到一个新行并继续。我读到这就是你的做法,但它不起作用 - 它只是延长了文本。
如何做到这一点?
sdl - 如何在带有 SDL2.0 的 pro 文件 Qt Creator 中包含 SDL_ttf
我正在尝试添加一个简单的文本以在窗口中呈现它。但是我有一个问题...
每次控制台向我显示以下答案时:
我不知道这个问题的根源是什么。也许错误出在 .pro 文件中:
main.cpp 中还有另一部分:
更多信息:
- 软呢帽 20
- Qt 创作者
- 用 yum 安装的所有 SDL 包
- 与可执行文件在同一目录中的 ttf 字体
先感谢您 !
c++ - 渲染多段文字?
这几天,我一直在做一堆低质量的游戏作为练习,其中大多数只涉及很少甚至没有文字,但这一次,我想做一个真正的游戏,一个非常依赖的模拟游戏在对话中,我呈现文本的方式是这样的:
如您所见,我并不完全使用表面,上面的代码只是我尝试从变量调用文本的示例,但是如果我想让段落出现在对话框中怎么办?就个人而言,我可以制作它们......以这种方式,比如在将表面转换为纹理之后设置矩形,等等,但我有一种强烈的感觉,它在技术上是错误的,可能有一种更短更简单的方法来做它,有吗?你能给我一个样品吗?我真的很感激。
c++ - SDL 重置曲面
我将一些文本绘制到表面(使用 SDL_ttf),然后我想更改表面上的文本。如果我只是重绘表面,文本不会消失。我已经查看了几个关于如何解决问题的论坛帖子,但我似乎无法弄清楚。特别是我不明白为什么这个解决方案不起作用:(代码很长,所以这只是提供了要点)
在声明的类文件中:
在我的渲染功能开始时:
我对指针和 C++ 的理解(当然是有限的)表明这应该使 box 指向的表面等于 boxCopy 指向的表面。相反,boxCopy 表面变成了 box 的副本。我不知道这行代码如何更改 boxCopy ,但似乎就是这样。
c++ - 在自动分配的表面上使用 SDL_FreeSurface
我正在开发的游戏中遇到严重的 ram 使用情况。我让它运行并看到它使用了超过 1.5 GB 的内存,从最初的 30 MB 使用。我已经确定了 2 个函数的主要原因,这些函数粘贴在下面。通过研究这个问题,我得出结论,其中一个问题是使用 TTF_RenderText_Blended 创建一个 TTF 表面会创建一个新的表面,而该表面没有被释放。我该如何释放这个自动制作的表面?我不能使用 SDL_FreeSurface,因为我没有表面名称。
我对第二个函数中发生的事情有点困惑。我假设正在发生类似的事情(一个函数被调用并创建了第二个没有被释放的表面),但我不确定是什么原因造成的。这不是一个问题,因为我计划实现此功能的不同版本,它不需要创建任何表面..
TTF 功能:
第二个功能(用于显示精灵):
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试过,出现同样的错误)
提前致谢。(如果我问的是一个愚蠢的问题,我很抱歉,但我在任何地方都找不到答案。)
c++ - 使用 SDL_TTF 作为类,内存泄漏
我有一个巨大的内存泄漏,这让我质疑我SDL_TTF
的整体实现。
现在我有以下课程
和类抽象了菜单类MainMenu
,Option
每个类都使用构建文本类的参数调用自己的按钮类。
所以现在我的主循环通过SDL_Renderer
MainMenu->Button->Text 路径向下传递 (gRenderer)。
当我的 Text 类初始化时,它会加载字体,使用TTF_RenderText_Solid
Button 类传入的消息设置字体,并将TTF_SetFontStyle
文本设置为粗体。
我使用:
我相信它是腹胀SDL_CreateTextureFromSurface
或SDL_RenderCopyEx
。
我能做些什么来修改这个内存泄漏?我是否忽略了一些公然的东西?
解决方案:
发现/使用 Twinklebear 的 ifnroamtion:
在标题中声明对象时,我声明了纹理并将其设置为等于NULL
:SDL_Texture* mTexture = NULL;
然后,在绘制函数内部,我检查纹理是否设置为 NULL:
我想做的是在类上抛出一个布尔变量来说明纹理是否需要更新,然后重置纹理。
c++ - TTF_RenderTextSolid() 返回一个每像素 1 个字节的 Surface?
这段代码:
打印数字 1,表示 TTF_RenderTextSolid 返回的表面每个像素有一个字节。如果我是正确的,它应该是每个像素 4 个字节。有谁知道为什么会这样?