【问题标题】:Pysdl2 cannot find directx on Windows 7Pysdl2 在 Windows 7 上找不到 directx
【发布时间】: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


【解决方案1】:

我在 Windows XP 上遇到了同样的错误 directx not available,并通过使用

将环境变量 SDL_VIDEODRIVER 设置为 windows 来解决它
set SDL_VIDEODRIVER=windows 

在启动我的 Python 模块之前的命令提示符下。你也可以直接在 Python 中使用

os.environ['SDL_VIDEODRIVER'] = 'windows'

请注意,windows 是 SDL2 中唯一支持的 Windows 驱动程序。 directxwindib 仅对 SDL1.2 有效。

我遇到了这个问题,因为我同时导入了 Pygame 和 PySDL2。事实证明,Pygame 模块(使用 SDL1.2)在导入时会将SDL_VIDEODRIVER 更改为directx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 2014-11-10
    • 2015-01-16
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多