私はプログラムをいくつかのグラフィックスを持っている。インタラクティブに実行すると、システムからOpenGLを使用して、ハードウェアアクセラレーションされたグラフィックスを提供したいと考えています。私はそれを一括して実行するときに、Mesa GLライブラリを使用するようにリダイレクトして、OSMesa機能を使ってオフスクリーンバッファにレンダリングできるようにしたいと考えています。 OSMesa機能は、バッチ起動オプションが選択されている場合にLoadLibrary/GetProcAddressを実行すると有効になります。WindowsでLD_LIBRARY_PATHをシミュレートする方法はありますか?
Linuxでは、この作業をかなり簡単に行うことができます。 Windowsで何かこれを行うことが可能である
if [ "$OPTION" = "batch" ]; then
export LD_LIBRARY_PATH=$PATHTO/mesalibs:$LD_LIBRARY_PATH
fi
:プログラムを起動するために、ラッパースクリプトを使用して、私はこのような何かを行うことができますか?
PATH変数にディレクトリを追加しようとすると、プログラムは引き続きopengl32.dllシステムに移動します。私がMesa GL/OSMesa共有ライブラリを使用するためのプログラムを入手できる唯一の方法は、プログラムと同じディレクトリにそれらを置くことです。しかし、私がそうすると、プログラムはopengl32.dllシステムを使用しません。
遅延ロードが鍵です。また、opengl32.dllとglu32.dllの両方が遅延ロードに設定されている必要があります。私はプログラムをバッチモードで起動した場合、ロードOpenGL32.dllとglu32.dllを遅延させて、これらの2つのDLLでLoadLibraryを呼び出すためのコードを入力するように実行ファイルを設定しました。このコードはQtライブラリへの最初の呼び出しの前に挿入されました。 – likso