.NET 3.5 C#では、NVIDIA SLIモードがアクティブであるかどうかを検出する方法はありますか
質問
nvidiaグラフィックスカードの場合、2つの動作を1つ(SLI)として使用できます。 .NETデスクトップアプリケーションの場合、SLIが有効になっていることを確認できる必要があります。これは可能ですか?
解決
それは可能です。
nvidia docsによると、これを照会できます nvcpl.dll経由 (ドキュメントが好きだった)。
使用する呼び出しはです NvCplGetDataInt()
(67ページ)、議論とともに NVCPL_API_NUMBER_OF_SLI_GPUS
また NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE
必要な情報を取得する必要があります。
この情報にアクセスするためにODERでは、p/invokeが必要です。統計的にリンクしても問題ない場合 NVCPL.DLL
正しいインポート(静的外部メソッド)を作成するだけで問題ありません。それ以外の場合は、を選択することもできます LoadLibrary
と GetEntryPoint
方法と使用 Marshal
クラスは、呼び出される関数を表す代表者(正しい引数で宣言された)のインスタンスを作成します。
編集:次のスニペットがあなたを始めるかもしれません(私はnvidiaカードを持っていないので、それは完全にテストされておらず、あなた自身の責任であります;)):
public const int NVCPL_API_NUMBER_OF_GPUS =7; // Graphics card number of GPUs.
public const int NVCPL_API_NUMBER_OF_SLI_GPUS = 8; // Graphics card number of SLI GPU clusters available.
public const int NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE = 9; // Get/Set SLI multi-GPU redering mode.
[DllImport("NVCPL.DLL", CallingConvention=CallingConvention.Cdecl)]
public static extern bool nvCplGetDataInt([In] int lFlag, [Out] out int plInfo);
public static void Main() {
int sliGpuCount;
if (nvCplGetDataInt(NVCPL_API_NUMBER_OF_SLI_GPUS, out sliGpuCount)) {
// we got the result
Console.WriteLine(string.Format("SLI GPU present: {0}", sliGpuCount));
} else {
// something did go wrong
Console.WriteLine("Failed to query NV data");
}
}
所属していません StackOverflow