问题标签 [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.
python - 如何在我的 Tkinter GUI 应用程序中嵌入 SDL2 窗口?
我正在尝试通过 pySDL2 将 SDL2 窗口嵌入到我的 Tkinter 应用程序中。如何设置我的 pySDL2 窗口、渲染器,以便我的渲染或绘图出现在嵌入式框架内?
其他示例显示了 pygame,但我发现我的 pygame 版本目前不能与 SDL2 一起正常工作。我知道 pygame 的其他实现正在尝试实现 SDL2,但与 SDL2 的兼容性对我来说是最重要的。
正常工作的一个例子是 Tkinter 窗口中的一个框架,它有一个屏幕,当单击一个按钮时,通过 pySDL2 API 将一些东西绘制到框架上。在尝试使用在其他地方找到的 pygame 解决方案时,我收到了一些不同的错误,包括 BadWindow、BadDrawable(与 X 服务器功能相关)。
python - 在 SDL 应用程序中未收到 WM_DPICHANGED
我正在尝试使用 PySDL2 绑定为带有 SDL2 的 Windows 10 编写一个 DPI 感知应用程序。现在我不关心支持比周年更新更早的任何其他操作系统或 Windows 版本。问题是,当在具有不同缩放因子的监视器之间拖动时,我没有收到需要调整窗口大小的 WM_DPICHANGED 消息。
我使用 Windows API 将整个过程设置为 per-monitor-dpi-aware (v2),这似乎工作正常。窗口内容从不缩放,我可以正确轮询当前显示 DPI,并且 Windows 正在缩放非客户区(例如标题栏),正如它们应该的那样。其他本地 Windows 消息也通过 WM_MOUSEMOVE 看到。
版本:Windows 10 1809、Python 3.7.2、SDL 2.0.9 全 64 位、PySDL2 0.9.6,如果您想在本地运行,您需要将 SDL2.dll 放在工作目录的“/native”子目录中, 或适当修改第 3 行
python - 如何编写 SDL2/OpenGL 事件循环
我正在使用 Python 中的 SDL2 和 OpenGL(pysdl2、PyOpenGL)编写一个实时交互式图形应用程序。应用程序不断产生帧,这些帧可能会响应键盘/鼠标输入或基于时间而改变。
我的主事件循环,从网络上一些我无法再次找到的晦涩来源复制而来,看起来(简化)如下:
据我了解,10 毫秒的延迟是为了给 CPU 一些喘息的空间,实际上,当我删除它时,CPU 使用率会翻倍。
我不明白为什么它是必要的。图形显示是双缓冲的,缓冲交换与垂直回扫同步(60 Hz = 16 ms)。天真地认为,如果<some OpenGL commands>
花费少于 16 毫秒,那么SDL_GL_SwapWindow
无论如何都会引入延迟,所以SDL_Delay
没有必要。如果他们使用更多,那么程序将努力跟上显示帧速率,并且引入延迟会造成伤害。
现在从另一个问题的回答中得知,缓冲区交换和回溯同步在执行时不会发生SDL_GL_SwapWindow
,但这只会将“同步和交换”指令放入 OpenGL 队列,并且这条指令当之前的一切都完成时被执行。对于<some OpenGL commands>
. 但是这个指令队列是有限的,因此在某些时候我的程序不是等待回溯,而是等待指令队列中有空间。最终效果应该是相同的:如果我的事件循环的一次执行平均需要少于 16 毫秒,那么程序将平均延迟足够长的时间,以使其每次循环执行 16 毫秒。再说一遍,为什么需要显式延迟?
作为第二个问题:考虑到延迟可能会损害帧率,有没有更好的方法让 CPU 休息?
pysdl2 - PySDL2 LockTexture 和修改像素
我找不到任何在 PySDL2 中锁定纹理和修改像素的有价值的例子
这是我的代码:
如何改变像素surface.contents.pixels
?
谢谢 !
pysdl2 - PySDL2在窗口表面显示灰度numpy数组
我将灰度图像转换为 numpy 数组。我正在尝试在 sdl2 窗口表面上渲染此图像。
现在我看到蓝色形式的图像。我想将它渲染为灰度图像。我也尝试探索 sdl2.ext.colorpalettes 但没有成功。
如何在 sdl2 窗口表面上显示灰度 numpy 数组
python - PySDL2 位图字体
我目前正在尝试为 PySDL2 制作位图字体,并且遇到了字符间距问题。API 需要表面、通用字符字形宽度和高度以及字符映射。字体是通过从指定宽度和高度的位图中读取字形来创建的,方法是将其与输入的映射相关联。
我知道很多游戏开发框架都使用类似的模式,但通过提供特定的位图中的字形宽度、高度和偏移量。PySDL2 BitmapFont文档显示了一个偏移字典,但据我所知(通过多次尝试迭代),它无法被操纵以实现类似的目标。
正如您在下面的示例中看到的,带有 '|' 和 'j',间距看起来很傻,因为每个字符都被读取为 64x64 像素,并且由于上述原因,我无法控制该间距。
由于要集成到的项目要求,它必须是位图字体,我不能利用诸如 PySDL2 的 TTF 库之类的东西。任何帮助深表感谢。
python - 有没有高级的 pySD 教程?
我目前正在尝试使用在 vensim 中开发并使用 pySD 导入到 python 的系统动力学模型。然而,pySD API 仅显示基本用法。能否请您向我建议如何获得高级教程。非常感谢。
python - 如何设置窗口图标 PySDL2
我想在 PySDL2 中设置窗口图标。我试着这样做
但是由于我使用sdl2.ext.Window
它不起作用。
关于我如何去做这件事的任何想法?
python - 播放音频与视频同步,实时生成动态帧。合理吗?
我是一名自学成才的 Python 程序员,从事一个爱好项目,但我遇到了一些困难,想解决我认为潜在的 XY 问题。
我的应用程序接受音频文件的输入(将其转换为 wav)并以 numpy 数组的形式生成音频(90x90、RGB、帧)的视觉表示。我曾经使用 open-cv 将这些帧保存到视频文件中,然后使用 ffmpeg 缩放视频并在顶部添加(原始,非 wav)音频,但这意味着等到应用程序完成播放文件. 我希望能够播放音频并在生成帧时同步显示它们。我的生成代码最多占用 16ms 帧 (60fps) 的 8ms,因此我有合理数量的周期可供使用。
根据我的研究,我发现 SDL 是最适合高速显示帧的工具,并且通过蛮力像素编辑成功地制作了一个简单的系统来“及时”显示帧。我还发现 SDL 可以播放音频,甚至似乎我可以通过回调函数将它与视频同步。但是,作为一个绝对非 c 的程序员,我不知道如何最好地显示帧,因为直接分配像素不是最安全或最快的,我想在显示帧时缩放帧。我也不知道如何最好地将 numpy 数组有效地转换为纹理,以及如何最好地控制我的生成代码、音频和视频帧的同步性。
我并不是专门寻找任何这些问题的答案,尽管我们将不胜感激,但我只是确保这是一个合理的前进方向。在这种情况下,SDL/pysdl2 与 numpy 相结合是否合适?还是这对 python 的要求太高了?