在 WSL2(Windows Subsystem for Linux 2)中运行 OpenGL 程序时,出现 MESA: error: ZINK: failed to choose pdev
和 glx: failed to create drisw screen
错误是常见的问题。这是因为 WSL2 本身并不直接支持硬件加速的 OpenGL,而是依赖于软件渲染(如 MESA 的 LLVMpipe 或 ZINK)。
问题原因
- WSL2 默认不支持硬件加速的 OpenGL,因此 MESA 的 ZINK 组件无法正常工作。
glxgears
能够运行并显示旋转的齿轮,是因为它使用了软件渲染(如 LLVMpipe),而不是硬件加速的 OpenGL。
解决方法
1. 使用 WSLg(WSL 的 GUI 支持)
WSLg 是 WSL 的 GUI 支持功能,它允许在 WSL2 中运行图形应用程序,并通过 Windows 的 GPU 驱动实现硬件加速。
步骤:
- 确保你的 Windows 版本支持 WSLg(需要 Windows 10 21H2 或更高版本,或 Windows 11)。
- 更新 WSL2 到最新版本:
wsl --update