在使用 Ansys SIwave 2025 R2.4 的时候,遇到了一个比较离谱的问题:3D 视图会显示为黑色。
环境如下:
| 项目 | 配置 |
|---|---|
| CPU | AMD Ryzen 7 9700 |
| GPU | AMD Radeon RX 9070 XT |
| 系统 | Windows 11 |
| 软件 | Ansys SIwave 2025 R2.4 |
具体表现是:打开 SIwave 的 3D 视图后,视图区域可能直接是黑色的。偶尔缩放、拖动或者旋转之后会短暂恢复,但很快又会变黑。截图相关功能也可能触发黑屏。

问题原因
通过 RenderDoc 可以看到,SIwave 的 3D 视图使用的是比较老的 OpenGL 渲染路径。RenderDoc 会提示类似信息:
Context not created via CreateContextAttribs. Capturing disabled.
Only OpenGL 3.2+ contexts are supported. Captures disabled.
Unsupported functions used:
glBegin
glCallList
glColor3f
...

RenderDoc 提示中的 glBegin、glColor3f、glCallList 等接口,基本都是 OpenGL 1.x 时代的东西(这都是文物了吧…..)。2025年的软件竟然还在用上个世纪的接口,这也确实不能怪改成AMD 原生 OpenGL 路径显示不出来(虽然也确实就是它显示不出来)…..
解决方案:使用 Mesa3D 替换 SIwave 的 OpenGL 加载路径
最终的解决方法是:给 SIwave 单独放置 Mesa3D 的 OpenGL wrapper,让 SIwave 优先加载本地的 Mesa opengl32.dll,从而绕过 AMD 原生 OpenGL 路径。
将以下 DLL 放到 SIwave 所在目录:
找到pal1000/mesa-dist-win,下载解压最新的release-msvc版本
在解压后的x64路径下找到dxil.dll、libgallium_wgl.dll和opengl32.dll,并复制到siwave.exe所在目录下,{path to ansys}\Ansys\ANSYS Inc\v252\AnsysEM
修复效果
直接通过原来的 SIwave 快捷方式启动,3D 视图可以正常显示,不再黑屏,旋转、缩放、查看 PCB 3D 视图也恢复正常。

总结
这个问题本质上不是 SIwave 没有绘制,也不是高 DPI 或窗口控件问题,而是 SIwave 的老 OpenGL 3D 视图和 AMD 原生 OpenGL 显示路径之间存在兼容性问题。
最终解决方案是:
- 给 SIwave 单独放置 Mesa3D 的 opengl32.dll / libgallium_wgl.dll / dxil.dll
- 让 SIwave 优先加载本地 Mesa OpenGL wrapper
- 绕过 AMD 原生 OpenGL ICD
这样可以在不修改系统 OpenGL、不更换显卡驱动、不影响其他软件的情况下,单独修复 SIwave 的 3D 视图黑屏问题。但是代价就是可能会影响些许3D显示性能。
现在都 6202 年了,Ansys 这么大的软件,SIwave 的 3D 视图竟然还在使用这么老的 OpenGL 路径,难崩。


