2014/08/20

GLFWマルチモニタガイド 日本語訳

GLFWマルチモニタガイド 


モニタオブジェクト

GLFWmonitorオブジェクトは現在接続されているモニタを表現します。

モニタの取得

プライマリモニタはglfwGetPrimaryMonitorで返されます。 通常、ユーザの優先モニタで、タスクバーやメニューバーのようなグローバルUI要素を備えています。
GLFWmonitor* primary = glfwGetPrimaryMonitor();
glfwGetMonitorsで、接続されているすべてのモニタを取得できます。
int count;
GLFWmonitor** monitors = glfwGetMonitors(&count);

ビデオモードの取得

GLFWは通常、フルスクリーンウィンドウを開く際に適切なビデオモードを選択してくれますが、あるシステムで正確にどのモードが利用可能であるかを知ることは時々役立ちます。 例えば、ビデオモードの一覧をユーザに提示して、そこから選ばせるような場合です。 利用可能なビデオモードの一覧を取得するには、関数glfwGetVideoModesを使うことができます。
int count;
GLFWvidmode* modes = glfwGetVideoModes(monitor, &count);
モニタの現在のビデオモードを取得するには、glfwGetVideoModeを呼び出してください。
const GLFWvidmode* mode = glfwGetVideoMode(monitor);

モニタの物理サイズ

モニタのミリメータ単位の物理的な大きさ、あるいはその近似値は、glfwGetMonitorPhysicalSizeで取得できます。
int widthMM, heightMM;
glfwGetMonitorPhysicalSize(monitor, &widthMM, &heightMM);
例えば、これによって、現在のビデオモードと合わせて、モニタのDPIを計算することができます。
const double dpi = mode->width / (widthMM / 25.4);

モニタ名

glfwGetMonitorNameでモニタ名を取得できます。
const char* name = glfwGetMonitorName(monitor);
モニタ名は、UTF–8エンコーディングのC文字列です。 モニタ名は一意とは限らないことに注意してください。

モニタのガンマランプ

モニタのガンマランプはglfwSetGammaRampでセットすることができ、モニタハンドルとGLFWgammaramp構造体へのポインタを受け付けます。
glfwSetGammaRamp(monitor, &ramp);
モニタの現在のガンマランプは、glfwGetGammaRampで受け取れます。
const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor);
一般的なガンマランプをセットしたいなら、glfwSetGammaで望みの指数からGLFWにそれを算出させることができ、それは結果のランプでglfwSetGammaRampを順に呼び出します。
glfwSetGamma(monitor, 1.0);