我最近设法让pysdl2 (0.9.3)在Windows8.1(64位)机器上工作(以及扩展模块gfx、mixer、ttf和image)。一切运行正常,包括pysdl2的example文件夹中的所有demo。
然而,当我尝试在Windows7(64位)上用相同的SDL2 DLL版本运行相同的代码时,我得到了错误消息:
sdl2.ext.common.SDLrror: 'directx not available'调用后
sdl2.ext.init()我尝试安装Directx最终用户运行时(2010年6月),甚至安装完整的SDK,但都无济于事。我还尝试将SDL_VIDEODRIVER环境变量更改为directx以外的其他变量,但也不起作用(显然在SDL2中不再提供'windib‘选项)。
我知道SDL2可能正在寻找DirectX9,现在DirectX11已经完全取代了它,但在安装了最终用户运行时之后,我的系统应该再次拥有DirectX9。此外,如果这是问题的原因,那么它也不应该在Windows8.1上工作,因为这个操作系统更新,甚至更不可能搭载DX9?
编辑:顺便提一下,pygame (它使用较旧的SDL 1.2库)能够找到directx作为
pygame.display.get_driver()输出:
'directx'所以一定是SDL2库的内部配置有问题。
发布于 2016-05-31 20:07:34
我在Windows XP上遇到了相同的错误directx not available,并通过使用以下命令将环境变量SDL_VIDEODRIVER设置为windows来解决此问题
set SDL_VIDEODRIVER=windows 在启动我的Python模块之前,在命令提示符上。您也可以使用以下命令直接从Python执行此操作
os.environ['SDL_VIDEODRIVER'] = 'windows'请注意,在SDL2中,windows是唯一支持Windows的驱动程序。directx和windib仅对SDL1.2有效。
我遇到这个问题是因为我同时导入了Pygame和PySDL2。事实证明,Pygame模块(使用SDL1.2)在导入时将SDL_VIDEODRIVER更改为directx。
https://stackoverflow.com/questions/29986563
复制相似问题