问题标签 [sdl]

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 回答
374 浏览

delphi - 为什么我的自定义组件会在 IDE 中引发 AV?

我正在尝试编写一个简单的组件,它允许您使用 SDL 1.3 API 在 Delphi 窗口中嵌入一个或多个 SDL 渲染表面。它可以很好地编译和安装,但是当我尝试在表单设计器中使用该组件时,每当我尝试在对象检查器中访问其属性、保存表单或删除组件并将其放置在然后尝试运行的表单会出现链接器错误:无论出于何种原因,它显然都无法正确读取 DFM。

DLL 可以在http://www.libsdl.org/tmp/SDL-1.3-dll.zip找到,我的组件的源代码可以在这里下载。SDL.pas 是 JEDI-SDL 头文件;其余的是我自己的代码。

我认为没有任何理由在表单设计器中提出 AV。如果我在运行时动态创建控件,我没有任何稳定性问题。任何人都可以看看这个,也许可以提供一些反馈来帮助我清理它?

0 投票
5 回答
15245 浏览

c++ - 如何使用 SDL 用 C++ 编写 RPG 游戏?

我想知道如何使用 SDL 用 C++ 编写 2D RPG 游戏。

我已经搜索过,但找不到任何好的东西。很多文章太基础了,没有深入研究任何实用的东西。谁能帮我提供一些文章、免费书籍或其他资源,以便我可以学习如何使用 C++ 和 SDL 编写 RPG?

编辑:

我不需要 SDL 的文档。我正在使用 SDL 编写一个 RPG 游戏,我需要一些示例来帮助我完成这项任务。

0 投票
5 回答
3742 浏览

c++ - SDL/C++ OpenGL 程序,如何阻止 SDL 捕获 SIGINT

我正在将SDL用于在 Linux 上运行的 OpenGL 应用程序。我的问题是 SDL 正在捕获 SIGINT 并忽略它。这很痛苦,因为我正在通过屏幕会话进行开发,并且无法使用 CTRL-C 终止正在运行的程序(计算机正在运行的程序连接到投影仪并且没有输入设备)。

有没有我可以传递给 SDL 的标志或其他东西,这样它就不会捕获 SIGINT?我真的只是希望程序在收到信号时停止(即当我按下 ctrl-c 时)。

0 投票
1 回答
900 浏览

delphi - 为什么当窗口不在屏幕上时 CreateDIBSection() 会失败?

我正在构建一个 Delphi 组件以在 VCL 表单上嵌入SDL渲染表面。只要在创建 SDL 表面时表单在屏幕上,它就可以正常工作。否则,它无法创建任何渲染纹理。

我追踪到 SDL 代码并最终得到以下函数调用,但失败(返回 NULL):

HDC 是绘图上下文的有效句柄,该句柄由具有自己的 HWND 窗口句柄的控件拥有,该句柄已正确设置。但是当控件在屏幕外创建时,这通常发生在 Delphi 中,(所有窗体及其控件都在隐藏状态下创建,直到显示它们) CreateDIBSection 调用将失败,直到控件实际可见。

此外,如果它是在屏幕上创建的,然后隐藏并重新显示(例如,如果它在选项卡上并且我切换选项卡)我创建的任何纹理在此过程中都会被空白。

这让我发疯了。任何人都知道发生了什么以及我该如何解决它?

0 投票
1 回答
1244 浏览

c++ - 简单的跨平台 C++ GUI 控制台——如何?

我正在写一个游戏,我最终需要一个控制台来进行简单的文本输入;文件名和简单值。

使用 SDL,我的控制台看起来最简单:

这将从应用程序的主事件循环中调用,如果控制台处于活动状态并且最后一个事件是按键,那么输入的结果将在必要的状态下进行处理。

当然,它看起来非常尴尬......有什么更好的方法来实现一个可以在我的游戏窗口中轻松呈现的简单控制台?(不要接近高度不可移植的解决方案,例如必须重新路由 std::cout 或编写代码以启动 UNIX 控制台等。)

0 投票
2 回答
10124 浏览

png - 如何将 SDL 表面保存为 PNG 并获得正确的颜色?

我编写了一个简单的补丁来将 PNG 保存功能添加到SDL_Image 库。它也几乎可以工作。问题是,所有的颜色都乱七八糟地出来了,而且我对 C 的了解还不够多,无法找出问题所在。任何人都可以看看这个并帮我解决它吗?

用例:

  1. 加载一个 256 色的 PNG 图像IMG_LoadPNG_RW
  2. 保存它IMG_SavePNG_RW.
  3. 看看它们是否相同。

修补:

0 投票
3 回答
4167 浏览

c++ - 使用 pthread 来利用多个内核的问题

我正在使用 SDL 和 Pthread 用 C++ 开发光线追踪器。我在使我的程序使用两个内核时遇到问题。线程可以工作,但它们不会 100% 使用两个内核。为了接口 SDL,我直接写入它的内存 SDL_Surface.pixels,所以我认为它不可能是 SDL 锁定我。

我的线程函数如下所示:

注意:scene->renderPixel 是 const,所以我假设两个线程都可以从同一个内存中读取。我有两个工作线程在做这件事,在我的主循环中我使用:

注意:我也尝试过创建和加入线程而不是同步它们。我用“-lpthread -D_POSIX_PTHREAD_SEMANTICS -pthread”编译它,gcc 没有抱怨。

我的问题最好使用执行期间的 CPU 使用图来说明:( 来源:jopsen.dk执行期间的 CPU 使用率。

从图中可以看出,我的程序一次只使用一个内核,然后每隔一段时间在两者之间切换,但它永远不会将两者都驱动到 100%。我到底做错了什么?我没有在场景中使用任何互斥锁或信号量。我该怎么做才能找到错误?

此外,如果我将 while(true) 放在 scene->renderPixel() 周围,我可以将两个核心都推到 100%。所以我怀疑这是由开销引起的,但我只每 0.5 秒同步一次(例如 FPS:0.5),给定一个复杂的场景。我意识到告诉我我的错误可能并不容易,但是调试它的方法也很棒......我以前没有玩过pthreads......

另外,这可能是硬件或内核问题,我的内核是:

笔记:

0 投票
2 回答
418 浏览

sdl - SDL_Surface 的外部编译错误

我收到Code::Block一个SDL_Surface变量的编译错误。奇怪的是,这是我第一次收到这种错误,因为我之前使用过这行代码并且运行良好。

导致此问题的一个(几个具有相同问题的)示例代码行是:

产生的错误是这样的:

我试图理解错误,但我不知道它是什么。有谁知道可能出了什么问题?

0 投票
2 回答
699 浏览

multithreading - 如何正确使用 SDl_Threads?

我不熟悉线程、SDL 以及图形的一般工作方式。我一直在浏览 LazyFoo 的所有 SDL 教程,对我帮助很大。但在他关于多线程的教程中,他评论说你不应该在单独的线程中使用视频功能,否则可能会导致问题。我很好奇应该怎么做,因为我对图形和线程的理解还很模糊。

由于我的一个项目是射击游戏,我想知道是否应该创建一个线程来显示所有图形,一个线程接收所有玩家为他的船输入,另一个线程用于敌方 AI。

如果这不是应该这样做的,(我认为这是错误的)是否有人对如何使用用户输入实现图形和使用线程的敌人 AI 有任何建议?

对于 Lazyfoo 的教程,这是链接: http ://lazyfoo.net/SDL_tutorials/

0 投票
1 回答
8654 浏览

c++ - 如何使用 OpenGL/SDL 让鼠标像 FPS 一样控制相机?

我已经使用 OpenGL/SDL 创建了这个基本的 3D 演示。我处理了键盘回调,因此我可以使用“a”和“s”左右“扫射”,并使用“s”和“w”前后移动。

但是,我现在想这样做,这样我就可以根据我的鼠标移动来控制我的相机“看”的方向。就像在 FPS 射击游戏中一样,当您在它周围移动鼠标时,相机会向各个方向环顾四周。

有谁知道当我移动鼠标时如何利用鼠标回调正确“指向”相机类?

这是我的 SDL 文件、我在上面粘贴的文件和我的 Camera 类的 tar。 http://www.filedropper.com/fpsdemotar

如果有人可以给我一些提示,告诉我在处理鼠标回调时我应该使用什么算法来指向相机,我将不胜感激。

谢谢!