デュアルディスプレイの環境下でOpenGL使うには問題ないのかを調べてみました。
そもそもOpenGLにはDirectXと違ってどのデバイスで描画を行うかの指定ができません。
必要になるのは ウィンドウハンドル だけだったりします。
デュアルディスプレイの環境も2種類のケースがあります。
1.1つのグラフィックボードから2つのディスプレイに接続している場合
2.2つのグラフィックボードからそれぞれディスプレイに接続している場合
これらのケースでOpenGLはうまく使えるのかというのが今回の内容です。
実験
RADEON HD 5450とIntel HD Graphicsを両方を有効化したものと、RADEON HD 6850から2枚のディスプレイというものを用意してテストしました。
結果は、1つのディスプレイから2枚のディスプレイに接続しているケースでは問題なくOpenGLは使えるようです。一方、別々のGPUからモニタにつながっているケースでは問題となるケースがありました。
どちらのデバイスがプライマリモニタにつながっているかという条件で動作が変わりました。
Intel HD Graphics がプライマリの時には、すべての状況で Intel がOpenGLの動作を握るようです。
逆にRADEONがプライマリの時には、RADEON側で動かす場合に限りOpenGLは機能し、他方モニタで写す状態では GDI Generic となるようで使い物になりません。
これらの点から、このような構成の時にはIntel HD Graphicsをプライマリに設定して老いた方が、アプリケーションの動作に問題は起こらなさそうです。(ただし、IntelのドライバがOpenGLをうまく動作させられるか疑問は残りますが)
結論
OpenGLではデバイス混在して使用することは想定されていないので、無理そうです。
同一メーカーの複数のボードで構成されるならば、 WGL AMD gpu association や WGL_NV_gpu_affinity といった拡張機能を用いて対象を制限することもできるような気がします。
グラフィックボードが複数枚、しかも別メーカー混在という状況は使い物にならない時代なのかもしれません。