问题标签 [sdl-2]

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

c++ - SDL2 未接收到窗口事件

我已经在我的 Macbook 和 Xcode 上使用了 SDL2,我很高兴。最近我试图接收一个焦点丢失事件,但它不起作用。经过一番修改,我发现没有收到任何窗口事件,除了一个类型为 512 的窗口事件,它以随机间隔每秒显示 2-5 次。s 是一个枚举,而WindowEventID不是十六进制格式,所以它不应该是一些十六进制数字。我在 SDL2 框架中搜索了 512,但一无所获。其他事件,喜欢SDL_QUITSDL_KEYDOWN工作得很好。有人知道发生了什么吗?

这是我的事件循环:

0 投票
2 回答
3829 浏览

c - SDL2 通过操作像素和 SDL_UpdateTexture() 搞砸了图像

我正在尝试制作一个简单的图像查看器。我基本上将图像加载到表面中,然后从中创建纹理。

SDL_RenderClear()最后,我按照迁移指南SDL_RenderCopy()进行常规操作。SDL_RenderPresent()

这工作正常,除了如果我SDL_UpdateTexture()在上面的 3 个渲染调用之前调用,我会得到一个混乱的图像:

乱七八糟的图片

我这样调用 SDL_UpdateTexture() :

image我为图像加载的表面在哪里,是texture我从中创建的纹理。尝试改变音高会导致不同程度的混乱图像。我也尝试使用矩形作为第二个参数,但如果矩形与图像具有相同的尺寸,结果是相同的。如果尺寸较大(例如与窗口相同),则不会发生更新,但不会出现错误。

完整代码可用。

我想直接通过image->pixels然后调用来操作表面的像素SDL_UpdateTexture(),但是只是调用SDL_UpdateTexture()而不进行任何篡改就足以把事情搞砸了。

0 投票
2 回答
2513 浏览

ios - 我应该如何使用 SDL2 iOS 应用程序事件?

我目前正在使用 SDL2 库和 C 来编写一个 iPhone 应用程序,并且大部分情况下进展顺利。不幸的是,文档在某些方面似乎相当薄弱,尤其是 iOS 特定的功能。我是使用 SDL2 的新手,这让事情变得非常困难。到目前为止,一切都奏效了,但我被一个问题难住了。SDL2 定义了六种专门用于移动应用程序的事件类型。README-ios.txt 文件描述了它们并像这样使用它们:

我对这段代码有几个问题。

SDL_SetEventFilter() 有什么作用?我阅读了 SDL Wiki 页面,它似乎特别模糊。

在实践中,HandleAppEvents() 函数是如何工作的?例如,如果我有这样的代码:

例如,当我收到 SDL_APP_WILLENTERBACKGROUND 时,应该在 HandleAppEvents() 或 main() 中放置什么样的代码来破坏内存或停止我的游戏循环?

假设 tex2 是可消耗的,如果应用程序收到 SDL_APP_LOWMEMORY,则可以将其删除。我如何从 HandleAppEvents() 中删除 tex2 而不会弄乱其他数据?

用户数据指针中有什么?

当我的应用程序进入后台时,我应该将我的纹理转换为表面,并将它们作为 bmps 保存在 ../tmp/ 目录中,还是当应用程序回到前台时它们仍然在内存中?

我希望我的令人困惑的问题有某种意义。如果有地方我可以找到 SDL2 的完整文档,那将是很高兴知道的。

谢谢参观!

0 投票
2 回答
609 浏览

c++ - 从哪里获得 Fedora 19 的 SDL2 非默认库?

所以基本的 SDL2 开发库都在存储库中,并且可以通过 yum 轻松访问,但是其他基于 SDL 的库呢?我说的是 SDL2_image 或 SDL2_mixer 等。有没有办法获取和使用它们?根据堆栈溢出帖子(此处)的说明,它们似乎已下载,但它们是 SDL2 吗?还是它们是 SDL 1.2?很高兴知道从哪里获得 SDL2。

0 投票
4 回答
2793 浏览

c - SDL2 tilemap - 太慢了

我正在使用 SDL2 编写一个在每一帧都显示一个 tilemap 的游戏,但是性能太慢了。我写了一个小程序来隔离问题。考虑“temp.bmp”是一个 16x16 的图像。

运行程序,我看到渲染一帧大约需要 16 毫秒。这正好是 60 FPS (1000/60),没有给游戏逻辑留下空间。另外,我正在一台速度非常快的计算机上运行它。

我很确定我使用了错误的策略,但我不确定什么是正确的。也许创建一个大纹理并减少更新它的频率将是要走的路,但我找不到任何关于如何将一个纹理复制到另一个纹理的文档。

那么,我怎样才能提高瓦片地图的性能呢?

0 投票
2 回答
1992 浏览

c++ - SDL2 渲染纹理明显滞后于鼠标

我在 Windows 上使用 SDL2(我已经测试了 Windows 7 和 Windows 8)。我正在尝试渲染锁定到鼠标坐标的纹理以创建一种“十字准线”效果。

它可以工作,但是纹理明显滞后于鼠标,这在鼠标运动和渲染更新之间造成了尴尬的延迟。老实说,延迟非常小,但对于关心绝对准确性的人来说,这会使人发疯。

我的问题基本上是,这正常吗?我猜测延迟是由于 Windows 将事件传递给 SDL,然后 SDL 将事件传递给我所花费的时间。如何通过 SDL 实现锁定的“十字准线”效果?

我的参考代码:

0 投票
6 回答
34346 浏览

c++ - SDL2:LNK1561:必须定义入口点

我想编译这段代码:

但它不能链接:Error 1 error LNK1561: entry point must be defined

这个库中有一些奇怪的代码:http: //hg.libsdl.org/SDL/file/75726efbf679/include/SDL_main.h

我还添加SDL2.lib;SDL2main.lib到项目设置 => 链接器 => 输入。

我能做些什么来运行这个项目?
VS 2012 SP3,空的 C++ 项目。

0 投票
2 回答
826 浏览

c - SDL2 Mac 文件处理

我在 Mac 上通过 SDL2 访问文件时遇到了一个奇怪的问题。我在 OS X Mountain Lion 上使用 XCode 4,并且使用 SDL2 作为框架。我不是从源代码编译 SDL2。我已将框架添加到包中,以及我需要加载的文件。该程序从 XCode 构建并运行良好,但文件不会在编辑器之外加载(即,如果我双击独立的 .app 文件不会加载)。这是我的 .app 包的样子:

在我的 C 代码中,我尝试过:

除了这个:

几乎所有的东西。我还尝试通过以下方式访问文本文件:

没有成功。在 XCode 编辑器中,只有长的绝对路径有效,而我尝试过的任何方法都没有在独立的 .app 中有效。

其他人是否遇到此问题?我在使用 SDL 1.2 时加载了文件,但由于某种原因,SDL2 似乎没有加载任何文件。SDL2 在初始化期间是否对活动目录做了一些奇怪的事情?

------------- EDIT 1-------------- 我最近尝试弄清楚发生了什么使用了这段代码:

从 XCode 4 编辑器运行时,它按预期工作。在 Debug 文件夹中,就在我的 .app 文件旁边,有一个 Test.txt 文件,其中包含短语“让我们看看这会在哪里结束......”。但是,通过单击独立应用程序运行时,程序会立即结束,并且找不到文本文件。我检查了日志,它只是说程序以代码 1 退出。通过更彻底的分析,它似乎fopen()失败了。有没有人知道可能发生的事情?

0 投票
0 回答
1120 浏览

opengl - 如何在 Windows 上使用 SDL 2.0 创建虚拟/虚假 OpenGL 上下文

作为这里的游戏开发新手,我目前正在练习使用C++和OpenGL图形,并希望组装一个既可以用于小型游戏项目的骨架项目,也可以与一些感兴趣的朋友分享。

目标是 OpenGL 3.3+(不使用过时的机制,例如“glBegin”等),使用库 SDL 2.0、GLEW 1.10.0(带有 WGLEW)和 GLM 0.9.4.5。我正在使用 Visual Studio 2012 进行开发,主要用于 Windows,但如果可能的话,多平台兼容性也是可取的。

手头的问题是我现在正在尝试实施抗锯齿。大多数消息来源似乎告诉我,为了实现这一点,我首先需要创建一个虚拟上下文,以便访问某些 OpenGL 功能,激活多重采样,最后生成一个适当的渲染上下文。如 [OpenGLs 页面](http://www.opengl.org/wiki/Creating_an_OpenGL_Context_%28WGL%29 “创建 OpenGL 上下文”)中所述。

我当时在想,是这样的;大多数指南、示例等倾向于混合使用 SDL 功能和 OpenGL 调用,或者构建完全专注于 OpenGL 调用的函数。虽然我可以用一些数字肘部油脂来重现这一点;我希望使用 SDL 的一半原因是不必自己管理窗口句柄、像素格式等,而是让 SDL 处理这些。

因此,我现在问你;我能否以某种方式创建一个虚拟上下文,启动诸如多重采样和各向异性之类的东西,并仅通过 SDL 2.0 等支持库转移到适当的上下文中,还是我必须亲自使用 OpenGL API(然后最好通过 GLEW)和建立几个启动器功能,如其他人有?如果我需要我自己,SDL 的宗旨不会丢失吗?

0 投票
1 回答
127 浏览

c++ - 为什么游戏窗口在特定时间后关闭?

为什么创建的窗口SDL Game Library在特定时间后自动关闭。
我知道原因是SDL_Delay()函数,但是如果不使用那个函数,游戏就会出现运行时错误。

如何创建一个在特定时间段内不出现连续工作的窗口?

我的代码(最简单的代码):