【发布时间】:2015-05-01 12:07:18
【问题描述】:
我最近设法让 pysdl2 (0.9.3) 在 Windows 8.1(64 位)机器上运行(以及扩展模块 gfx、mixer、ttf 和 image)。一切正常,包括 pysdl2 的示例文件夹中的所有演示。
但是,当我尝试在 Windows 7(64 位)上使用相同的 SDL2 DLL 版本运行相同的代码时,我收到错误消息:
sdl2.ext.common.SDLrror: 'directx not available'
调用后
sdl2.ext.init()
我尝试安装 Directx 最终用户运行时(2010 年 6 月)甚至完整的 SDK,但无济于事。我还尝试将 SDL_VIDEODRIVER 环境变量更改为 directx 以外的其他变量,但这也不起作用(显然 'windib' 在 SDL2 中不再作为选项可用)。
我知道 SDL2 可能正在寻找 Directx 9,它现在已完全被 Directx 11 取代,但在安装最终用户运行时后,我的系统应该再次使用 Directx 9。此外,如果这是问题的原因,那么它也不应该在 Windows 8.1 上运行,因为这个操作系统更新,更不可能携带 DX9?
编辑: 在旁注中,pygame(它使用较旧的 SDL 1.2 库)能够找到 directx 作为
pygame.display.get_driver()
输出:
'directx'
所以 SDL2 库的内部配置肯定有问题。
【问题讨论】:
-
旁白:“DirectX 最终用户运行时”不再实际安装“DirectX”。 WINdows 7 和 Windows 8.1 的操作系统中始终都有“DirectX 9.0c”,您无法卸载或安装它。 DXSETUP 软件包所做的只是安装
D3DX9,它是亲戚。见Not So Direct Setup -
DirectX 是否列在检测到的驱动程序中,如果您检查检测到的驱动程序:
val = sdl2.video.SDL_GetNumVideoDrivers(); for i in range(val): print(sdl2.video.SDL_GetVideoDriver(i)) -
不,只列出“windows”和“dummy”。
-
我觉得就是这台机器。我在另一台 Windows 7 Pc 上对其进行了测试,它在那里运行良好。奇怪的是,pygame 确实在拒绝运行 sdl2 的机器上以 directx 模式工作。我希望这是个例外,大多数 Windows 7 电脑都不会遇到任何问题......
标签: python python-2.7 directx sdl-2 pysdl2