问题标签 [pysdl2]

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 投票
2 回答
2920 浏览

eclipse - 安装 pySDL2 后 SDL2 的 RuntimeError

我通过以下方式安装了 pySDL2 0.4.1:

下载源码包,输入python setup.py install. 然后我尝试运行复制粘贴到 PyDev eclipse 中的“The Pong Game: Getting Started”教程代码示例:

导入操作系统、系统

我收到以下错误:

我通过 Synaptic 安装了 Pypy 和 libSDL,并且在 PyDev - PythonPath 中没有添加任何外部库。

我究竟做错了什么?

0 投票
2 回答
2645 浏览

python - RuntimeError:找不到 SDL2_ttf 的任何库

我有 pysdl2 的问题。我正在尝试从 site-packages\sdl2\examples 启动示例并看到此错误:

但是不使用 sdl2_ttf 的文件(例如 sdl2hello.py)可以正常工作并且没有错误。我不知道如何解决它。

附加信息:WinXP SP3 32 位

0 投票
1 回答
1628 浏览

python - SDL_Surface / LP_SDL_Surface 的 PySDL2 问题

我用 python 3.3 和 PySDL2 0.5 运行 win7。创建表面时(无论采用何种方法),我都会得到一个 LP_SDL_Surface 而不是 SDL_Surface。LP_SDL_Surface 缺少您期望它具有的任何方法和属性。这是使用文档中的示例代码的问题:

回溯是:

谷歌搜索“LP_SDL_Surface”会带来 0 (!) 个结果。

0 投票
3 回答
2079 浏览

python - 将 cv2 图像转换为 PySDL2 表面以进行位图传输到屏幕

我正在使用新的 PySDL2 包,试图将它与我现有的 OpenCV 代码接口。我想通过 cv2 python 接口从网络摄像头捕捉到 OpenCV 的图像,并使用 PySDL2 在屏幕上的窗口中显示它。我想我想出了如何正确地将 cv2 图像格式转换为 PySDL2 表面,但是在下面的代码末尾,我得到的只是一个黑色窗口。任何关于我出错的地方的指示将不胜感激!

0 投票
1 回答
2660 浏览

python - Cython + ctypes?

我们目前正在使用Cython绑定到一些网络和数据库库。我们也想使用SDL,但PySDL2用于ctypes绑定。虽然Cython是整个解释器,但ctypes只是库。但是,Cython并且ctypes最常被描绘为彼此的替代品。因此,我完全不确定它们是否兼容。

所以,问题:可以在一个项目中使用Cython和一起使用吗?ctypes

0 投票
2 回答
2747 浏览

python - 使用 PySDL2 捕捉操纵杆事件

我正在使用 python 的新(ish)SDL2 包装器PySDL2,我似乎看不到事件队列上弹出任何操纵杆事件。Keydown 事件很好,当我明确地轮询操纵杆时,我可以很好地获得轴状态(并观察它随着我移动轴而改变,正如预期的那样)。这是我使用队列的代码:

这会打印出所有 keydown 事件,但不会打印出任何轴运动事件。相反,这是我明确轮询轴状态的代码:

哪个工作正常,但如果状态没有改变,我不想浪费时间轮询状态,所以如果我能让它工作,我更喜欢事件队列方法。有什么建议么?

如果重要的话,我在 Mac OS 10.9 上运行 python 2.7.5。我试过罗技 USB 游戏手柄和 Xbox 360 有线游戏手柄(通过 tattiebogle.net 驱动程序启用)。上面我讨论了轴事件,因为这是我需要的,但我已经检查过了,没有任何操纵杆事件发布到事件队列中。

0 投票
2 回答
1346 浏览

python - PySDL2 和 SDL_GetKeyboardState

我正在尝试通过 PySDL2(当前版本 0.7.0;/文档)学习 SDL。它为(我假设)所有 SDL 的普通函数提供了一个ctypes Python 包装器,并通过其包提供了更多 Pythonic 函数sdl2.ext来处理细节并以 Python 类型返回结果。例如,sdl2.ext.get_events()将调用sdl2.SDL_PumpEvents(),然后查看队列中的所有事件并将它们作为 Python 列表返回。

但是,我不知道是否存在这样的便利功能SDL_GetKeyboardState()。该函数的官方SDL Wiki 文档将其定义为:

其中 numkeys 可能为空(否则它将接收返回数组的长度),返回的 Uint8* 是指向键状态数组的指针,由 SDL_Scancode 值索引,如果键按下则保持 1,否则保持 0起来了。

PySDL2 确实通过 提供了对 SDL_GetKeyboardState 的直接调用sdl2.keyboard.SDL_GetKeyboardState(numkeys),但它返回的 ctypes 值不会立即有用。

所以我的问题是,是否有更多 Pythonic 函数可以通过 PySDL2 获取当前 SDL 键盘状态?如果有,它是什么以及应该如何使用?如果没有,是否应该提交一份?

作为参考,我想我自己想出了如何实现这个功能,但这是对 ctypes 的粗略洗礼,所以我可能会弄错一些东西:

0 投票
1 回答
1754 浏览

python - SDL2 像素图形管线

我是 SDL/SDL2 的新手,在 C/C++ 方面的经验很少,有些使用 pygame、pyglet 和 PySide,现在我正在尝试 PySDL2,希望能找到更快的处理替代方案。处理是用于绘图,但有一个直接的API 用于直接像素作品

我昨天刚开始使用 PySDL2,花了一整天的时间编写样板代码来实现简单的火算法。有些人可能会嘲笑它——仅仅一天——但我认为对于图形库来说,你可以在一天内用它绘制一些东西是很重要的。我的问题是糟糕的 C/C++ 经验,并且相关的 PySDL2 API主要是直接映射到 C API,因此很难挖掘基于 C 的术语和细节的所有血淋淋的细节。我放弃了寻找关于 SDL2 的图形管道的简单概述。

图形管道是字节和/或整数最终成为屏幕上的像素的路径。举例来说,OpenGL 的高级图片在这里 - http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Chapter-1:-The-Graphics-Pipeline.html - 我是在 SDL2 中寻找更详细的管道图片。

理解如何在 SDL2 中绘制像素的主要困难在于 SDL2 API 提供了有用的帮助器来隐藏这些低级细节。就像您加载位图并获得表面一样。然后将表面移动到纹理。然后 SDL2 以某种方式将纹理移动到视频内存。然后告诉 GPU 在屏幕上显示它。这不是我的理解方式,但是我无法在提到它的地方给你链接。所以,它是:

对于我的应用程序,这应该每秒运行 25 次。当我用 Python 编写它时,我真的需要知道管道来决定在哪里进行优化。但我不确定管道是否正确,我在 API 中有点迷失 - 有很多助手,我什至不知道我计算的像素数据可能和应该是什么样子的起点。

所以我需要知道:

  1. SDL2 支持哪些类型的输入数据(bmp、内存指针等)
  2. 是否有输入转换成的中间数据格式
  3. 什么是数据转换链
  4. 如何控制转化链
  5. SDL2 支持哪些输出类型

  6. PySDL2 中的样子

还有一个问题被某人否决了,这告诉我,我并不孤单。

更新:

正如@Ancurio 所指出的,表面对象已经是像素数组和数据数组,所以我正在更改图表并提供表面是像素数组的定义。

因此,基本上表面是 1. 带有像素数据的连续内存块,2. 有关像素的信息。位图也是一个像素数组,您可以从磁盘或图像加载它。但是 SDL2 不能直接使用。为什么?

pipeline第一步的问题是int和bitmap像素如何转化为surface像素,surface和bitmap有什么不同?我正在使用没有明显直接内存访问的 Python,我需要弄清楚我的选择是什么。

0 投票
2 回答
1133 浏览

python - 适用于 Linux 的便携式 .so 库

我正在编写一个适用于图形并依赖于PySDL2库的 Python 应用程序。PySDL2 依赖于SDL2可以从 SDL 站点下载的已编译二进制库。我写了一个引导脚本来自动化这个过程,但它只适用于 Windows,因为 Linux 没有二进制下载。

问题是如何为 Linux 下载二进制 SDL2?

目前尚不清楚是否有可能创建适用于每个 Linux 的 .so 文件,是否是因为不可能创建适用于每个 CPU 的 .so 文件,这主要是因为不清楚是否在这个方向上已经做了任何工作(我相信人们试图研究这个问题),如果是,那么为什么不采用可移植 .so 文件的格式(针对不同发行版和 CPU 的跨平台)。

更新:我不介意通过 Linux 社区提供的更新和安全修复安装依赖项(包),但这应该在用户空间中完成,并且我需要能够使用可移植脚本自动化它。

0 投票
1 回答
1066 浏览

macos - 在 mac os x 10.9 上设置 pySDL2 的问题

我在运行 OSX 10.9 的 macbook pro 上设置 PySDL2 时遇到问题。我下载并安装了 SDL 2.0.1,并尝试在此处遵循 PySDL2 教程:http: //pysdl2.readthedocs.org/en/latest/integration.html

当它说“也可以设置环境变量PYSDL2_DLL_PATH,它应该指向SDL2库的目录”时,我不知道该怎么办。我尝试运行“export PYSDL2_DLL_PATH=/Library/Frameworks”,但我不知道这是否是我应该做的。目前,当我尝试运行此代码时:

我收到错误“ImportError: No module named 'sdl2'” 那么我该如何正确设置呢?

编辑:使用 macports 我得到了正确的设置。谢谢各位大佬。