我有一个程序做了一些图形。当我以交互方式运行它时,我希望它使用系统中的OpenGL来提供硬件加速图形。当我批量运行它时,我希望能够重定向它以使用Mesa GL库,以便我可以使用OSMesa功能渲染到屏幕外缓冲区。如果选择批量启动选项,则通过执行LoadLibrary/GetProcAddress启用OSMesa功能。有没有什么方法可以在Windows中模拟LD_LIBRARY_PATH?
在Linux上,它很容易使这项工作。通过使用一个包装脚本调用程序,我可以做这样的事情:
if [ "$OPTION" = "batch" ]; then
export LD_LIBRARY_PATH=$PATHTO/mesalibs:$LD_LIBRARY_PATH
fi
这是可能做到这一点在Windows的东西吗?
当我尝试添加目录到PATH变量,程序继续去系统OPENGL32.DLL。我可以让程序使用Mesa GL/OSMesa共享库的唯一方法是让它们与我的程序位于同一个目录中。但是,当我这样做时,该程序将永远不会使用系统opengl32.dll。
延迟加载是关键,我也发现opengl32.dll和glu32.dll必须设置为延迟加载。我将可执行文件设置为延迟加载opengl32.dll和glu32.dll,然后将代码放在这两个DLL上调用LoadLibrary,如果程序以批处理模式启动的话。这段代码是在第一次调用Qt库之前插入的。 – likso