问题标签 [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++ - 为什么我无法在 SDL2 中绘制纹理?
在过去的几个月里,我一直在晚上和周末在 SDL 从事一个项目。我目前正在尝试使菜单系统正常工作。目前,我正在使用SDL_TTF
. 至于我的问题,当我尝试将一些纹理绘制到另一个纹理时,我看到了一些奇怪的行为。
奇怪的是,当我绘制它时,在使用创建的目标纹理上SDL_TEXTUREACCESS_TARGET
(就像它在文档中所说的那样)什么都不绘制,但不返回任何错误。但是,如果我使用SDL_TEXTUREACCESS_STATIC
or SDL_TEXTUREACCESS_STREAM
,由于 access 属性,它会在我设置渲染目标时返回错误,但绘制得很好。在进行了一些挖掘之后,我听说了一些关于英特尔驱动程序中的错误的消息(我使用的是带有英特尔显卡的 Macbook),所以我想知道这是否是我搞砸了,以及如何修复它。或者,如果这不是我的错,我仍然想知道发生了什么,它是否会在不同的平台上表现不同,以及我该如何解决它。
这是我的代码,在删除不必要的部分和之后:
我创建渲染器:
稍后,当我渲染到画布上时:
在这里,我解析出一些属性并使用 TTF_SetFontStyle() 和 clr 设置它们的文本颜色。
canvas 被返回给调用函数,因此它可以被缓存,直到这个文本框被修改。该功能的工作原理是为整个盒子创建纹理,在其上绘制背景纹理,然后在其上绘制此图像,并保持整个物体。
该代码如下所示:
(绘制背景的东西,渲染得很好)
总和返回到另一个进行绘图的函数。
提前致谢!
更新 所以我发现它只在我的访问设置不正确时才绘制的原因是,由于该函数返回一个错误值,渲染目标从未设置为纹理,所以它只是在屏幕上绘制. 我还通过编写函数 AuditTexture 检查了所有纹理,该函数检查纹理的纹理格式是否受渲染器支持,打印访问属性的字符串描述,并打印尺寸。我现在知道它们所有的纹理格式都受支持,两条线是静态的,canvas 和 sum 是渲染目标,它们的尺寸都不为零。
sdl - 使用 SDL_ttf 将文本显示到窗口的分段错误
这只是让我自己使用 SDL 的培训练习,忽略缺少功能、警告和一切都是主要的。我不断遇到分段错误,这肯定是我在该部分下的//Initialise TTF, create font pointer, set font and colour then render.
部分所做的,因为没有它的代码可以正常工作。
我认为问题出在-------
's 之间。
c++ - 使用 SDL_TTF 时 C++ 程序内存使用量不断增加
我正在使用 SDL 库为一个简单的游戏编写代码。我对此有两个问题:
如果我不设置断点并让程序自行运行,那么内存使用率会很高(与开始相比增加了 20-30 倍)。但是,如果我停止循环(游戏的主循环)并自己点击,大约 100 次点击后内存使用量保持不变(?)。为什么?
所以我决定使用仪器来分析原因,因为我认为在循环中我可能会添加新元素而不破坏它。每次我在 Instrument 中记录时,应用程序都会运行 5 秒并关闭并报告崩溃报告(应用程序运行完美,内存内容,在 xcode 中)
线程 0 崩溃::调度队列:com.apple.main-thread
0 org.libsdl.SDL2 0x0000000100f5bea9 0x100ee9000 + 470697
1 尖峰 10 0x0000000100ea40cc imageTexture::render() + 50 (imageTexture.cpp:37)
2 尖峰 10 0x0000000100ea2b70 GUI::renderImage() + 40 (GUI.cpp:140)
3 尖峰 10 0x0000000100ea30b2 GUI::run() + 1258 (GUI.cpp:172)
4 尖峰 10 0x0000000100ea439e 主 + 36 (main.cpp:15)
5 libdyld.dylib 0x00007fff8c60f5ad 开始 + 1
这些是我认为可能相关的一些代码:
对于数字 3://imageVector 只是一个包含所有 imageVector 指针的向量
对于 2 号:
经过长时间尝试禁用/启用代码以找出发生了什么,我仍然不知道出了什么问题。
这是我当前的循环:
一些代码:
c++ - SDL_Delay 在 for 循环中不起作用
出于某种原因,我的循环不起作用。我正在尝试创建慢速输入文本,但它只是同时打印。慢速打印文本,我的意思是像 RPG 的对话。
这是我的代码:
如果需要,这是我的完整代码:
c++ - 为什么 TTF_RenderText_Blend 需要一个 const char?
我正在尝试使用函数的结果将字符串提供给 TTF_RenderText_Blended。然而,这意味着它需要是一个变量。查看声明,它坚持认为参数必须是 const char。
cabal-install - 在 Haskell 中安装 SDL-ttf-0.6.2.1 时出错:找不到 -lSDL_ttf
我在尝试 cabal 安装 reactive-banana-sdl 时遇到了以下问题:
我该怎么办?
一些细节:我使用的是 Windows 7,并在 MINGW64 中执行此操作。我已经通过 pacman 安装了 sdl-ttf,从https://www.libsdl.org/projects/SDL_ttf/release-1.2.html下载了 SDL_ttf ,并替换了 SDL_platform.h ( https://hg.libsdl.org/SDL /raw-file/e217ed463f25/include/SDL_platform.h)修复另一个错误(“winapifamily.h:在 Code::Blocks 中编译 SDL 时没有这样的文件或目录”)。我确保包含额外的目录。
c - 以不同颜色呈现字符串中的特定字符 (SDL_ttf)
所以我有 25 行文本,每行 40 个字符保存在一个字符串数组中,其中有控制代码表示以下字符应该是的颜色,例如一行可能是:
[RED] Hello [BLUE] World
其中 Hello 必须为红色,World 必须为蓝色。目前我已经到了可以阅读第一个代码的地步,即[RED](实际控制代码是十六进制)并使用以下行我可以突出显示它:
其中 d->font 是字体,array_pointers[i] 是那行文本,颜色是要设置的背景/前景(默认为黑色背景,所以不用担心。这条线会将整个字符串渲染为红色,忽略第二个控制代码。
我的问题是:有什么我可以使用/一种可以将字符串的特定部分呈现不同颜色的方法吗?据我所知,RenderUTF8_Shaded 仅将整个字符串作为参数。
c++ - 正确释放 SDL_Surface?
我可以这样做释放我的 SDL_Surface* 冲浪吗:
还是这会导致内存泄漏?