问题标签 [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 回答
1249 浏览

android - SDL 2.0 源码里面有 1.3 吗?

我正在使用 SDL 2.0 源代码,并注意到其中有另一个声称是 1.3 版的 SDL 文件夹。

我对它很感兴趣,因为它有 android、iphone 和其他一些的源代码。稳定版 1.2 似乎完全不同。

我的问题是这样的

SDL 维基链接

此链接谈到 SDL_compat.c,它可能允许代码同时适用于 1.2 和 2.0。这是我应该使用的版本吗?我应该按照 2.0 API 的建议进行编码吗?我希望我的代码针对尽可能多的平台,包括 android 和 iphone。

0 投票
1 回答
2438 浏览

opengl - 使用 OpenGL 和 DirectX 进行 SDL 窗口管理

我正在将一个小型图形引擎从 DirectX 9 移植到 OpenGL。该引擎使用 SDL(现在移植到 2.0)来管理输入和窗口创建。

我想知道如何正确处理 OpenGL 和 DirectX 的窗口事件。我对这些桌面平台(linux、OSX 和 windows)感兴趣

  • 窗口分辨率更改
  • 全屏到窗口/窗口到全屏处理
  • Alt+tab 处理 -

我试图通过网络搜索,但信息并没有集中在一个地方。我想许多其他人以前也面临过同样的问题。

是否有任何资源可以阅读有关我的引擎的这种处理指南?是否可以在不丢失传输到 OpenGL 和 DirectX 中的渲染器系统的资源的情况下处理分辨率变化?

0 投票
3 回答
18871 浏览

c++ - SDL2 纹理的意义何在?

我有点卡在 SDL2 纹理背后的逻辑上。对我来说,它们毫无意义,因为你无法吸引它们。

在我的程序中,我有几个表面(或者在我切换到 SDL2 之前是什么表面),我只是将它们拼凑在一起形成层。现在看来,我必须创建几个渲染器和纹理来创建相同的效果,因为SDL_RenderCopy需要一个纹理指针。

不仅如此,所有渲染器都必须来自一个窗口,这我理解,但仍然让我更加犯规。

这一切似乎都非常庞大和缓慢。我错过了什么吗?有没有办法直接绘制到纹理?纹理的意义何在,我是否可以安全地使用多个(如果不是数百个)渲染器来代替表面?

0 投票
1 回答
3252 浏览

ios - 如何使用 ffmpeg/sdl 在 UIView 中播放视频

我正在尝试制作一个可以使用 ffmpeg 和 sdl2 播放各种视频格式的视频播放器,并且我需要在 UIView 中显示视频帧。在查看了 SDL api 及其示例后,它找不到解决方法。SDL 用于SDL_Renderer将图像渲染到 aSDL_Window中,其中包含对 a UIWindow(应用程序的主 UIWindow)的引用,而不是特定的UIView.

有什么建议吗?

0 投票
2 回答
3402 浏览

c++ - 创建 OpenGL 4.3 上下文崩溃 GLX

我正在使用 SDL2 和 C++11 构建游戏引擎(只是作为个人项目,为了娱乐和练习),我想做的一件事是尝试让图形驱动程序使用最新的支持版本OpenGL,并根据版本改变引擎的图形部分的渲染方式。这样,我可以在相关且有用的地方使用 OpenGL 的最新功能,同时也支持旧硬件。我能想到的方法有两种:

  1. 检测最新支持的 OpenGL 版本并使用它,但我想不出任何方法来做到这一点。是的,我试过谷歌。

  2. 使用反复试验,我从最新版本开始(4.3,但我的 GTX 460 仅支持最高 4.2,即使我更新了驱动程序),如果失败(我通过检查 SDL 来检测返回 NULL 上下文),我降低版本号并重试。

我使用的方法(#2)在创建 4.3 上下文后立即失败。我知道我的图形驱动程序现在只支持 4.2,但我曾认为 GLX 旨在引发错误,提供 NULL 上下文,并让您的程序继续运行,但它无法通过上下文创建失败. 我对 GLX 行为方式的假设是否错误?有没有办法在不创建上下文的情况下检测最新的支持版本?

因为我知道有些人更喜欢看到演示错误的完整和最小的源,所以它是:

此外,如果我将该代码更改为以 4.2 上下文而不是 4.3 开头,它就可以正常工作。所以错误在于专门创建 4.3 上下文。

0 投票
2 回答
11102 浏览

c++ - SDL2 OpenGL3 如何在函数内初始化 SDL

我正在试验新的 SDL2 beta 和 OpenGL3 上下文,但遇到了一个奇怪的问题:

如果我在 main() 函数中运行 SDL 初始化代码,它可以正常工作,但我想将此代码放在单独的 init_sdl() 函数中。

如果我把初始化代码放在一个单独的init_sdl()函数中,并从main()中调用这个函数,背景颜色永远不会绘制,程序开始疯狂消耗我系统的所有资源。

有人能指出一个工作示例,其中 SDL 在单独的函数中初始化吗?我似乎找不到...也许这是不可能的?我想我隐约记得 SDL 1.2 也有类似的问题,但自从我使用它已经有几年了,我想我还没有找到解决方案。事实上,这可能是我选择改用 SFML 的原因。

我真的很想使用 SDL2 而不是 SFML,因为它可以在更多平台上运行,但不能将事物分成小功能对我来说是个大问题。这应该很容易,我是否遗漏了一些明显的东西?

编辑:

这有效:

这不起作用:

0 投票
0 回答
1233 浏览

ios - 适用于 iOS 的 SDL 库

我正在尝试将 SDL 2 用于 iOS 应用程序。我正在构建 libSDL2.a 并将其添加到我的项目中。此外,我将所有标题添加到应用程序项目中。对于初始化,我使用下一个代码:

然后为了绘制我的图像,我使用下一个代码:

图片绘制得很完美,但在绘制后我看不到任何 iOS 原生对象(UIView,UIButton等),没有应用程序 UI,即使我以编程方式添加这些对象也是如此。我尝试在创建 SDL 的窗口 + 渲染器后添加 UIKit 控件。例如,对于添加 UIKit 控件,UIView我使用下一个代码:

哪里 self 是 UIViewController。

然后我尝试UIWindowSDL_SysWMinfo代码中获取:

但是当我尝试初始化时SDL_SysWMinfo我有一个嵌套问题: https ://docs.google.com/open?id=0B1IEde1HB7cUSVE1NGpVNDRHTUU

有人有什么想法吗?

0 投票
1 回答
1562 浏览

sdl - SDL2 & SDL_ttf - Best Practice

I have some basics set up in my game but I came to a point where I want to include font rendering (initially for debug output to the screen).

Looking at various tutorials and the SDL_ttf library I require clarification on something. The SDL_ttf will give you an SDL_Surface which you can then create a texture from to allow for hardware rendering. The whole process though requires a font file loading.

My main question is - Is it safe to leave the font file open until the font is no longer needed?

I saw a tutorial which closed the font file immediately after creating the SDL_Texture. My thoughts were if this was used for frequently updated text e.g. a frame rate counter, this would be highly inefficient and it would be better to hold the font file open (assuming there is no negative impact).

And the follow up from this would be if the font file is held open, would it be locked so no other font could use it?

0 投票
2 回答
840 浏览

c++ - SDL 2.0 -> 传递了一个 NULL 互斥体

当我使用 SDL 2.0 编译一个简单的示例时,在命令 SDL_CreateWindow 之后,会发生以下错误:“传递了一个 NULL 互斥体”。

我正在使用静态库项目。我也在 OSX 10.8.3 上进行测试。

这通知在命令行编译中遗漏了什么?

下面是生成程序生成和代码示例的命令行。

编译器:

链接器:

代码:

0 投票
2 回答
12067 浏览

c++ - SDL_DisplayFormat 未在此范围内声明:使用 SDL2

编译器不会返回缺少的 SDL.h,而是 SDL_DisplayFormat 未在位于不同标头的类成员函数的范围内声明,即使我已在 main 中对其进行了初始化。

我的主要通过类和成员函数初始化 SDL:

我可以使用 SDL_Window 使用该类创建一个窗口,也可以使用 SDL_GetTick。

编辑:用于 Sprite::Load 的标头当前是从 mercurial 存储库中提取和构建的 SDL、SDL_image、SDL_ttf 和 SDL_mixer。我不认为这是一个链接错误