我最近设法让pysdl2(0.9.3)在Windows 8.1(64位)机器上运行(以及扩展模块gfx、mixer、ttf和image)。一切都很好,包括pysdl2示例文件夹中的所有演示。
然而,当我尝试在Windows7(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(使用旧的SDL1.2库)能够找到directx作为
pygame.display.get_driver()
输出:
'directx'
所以SDL2库的内部配置肯定有问题。
我在Windows XP上遇到了同样的错误directx not available
,并通过使用将环境变量SDL_VIDEODRIVER
设置为windows
来解决它
set SDL_VIDEODRIVER=windows
在启动Python模块之前,请在命令提示符下单击。您也可以使用直接从Python中执行此操作
os.environ['SDL_VIDEODRIVER'] = 'windows'
请注意,windows
是SDL2中唯一支持的Windows驱动程序。CCD_ 5和CCD_ 6仅对SDL1.2有效。
我遇到这个问题是因为我正在导入Pygame和PySDL2。事实证明,Pygame模块(使用SDL1.2)在导入时将SDL_VIDEODRIVER
更改为directx
。