2014/07/20

GLFW3の新機能

V3.0の新機能

CMakeビルドシステム

以前バージョンのGLFWでは各種makefileやプロジェクトファイルを利用していましたが、それ代わって,CMakeビルドシステムを使うようになりました.CMakeはGLFWがサポートするすべてのプラットフォームで利用可能で,ほとんどのパッケージシステムで提供されており,ほとんどのメジャーな開発環境用のmakefileやプロジェクトファイルを生成できます.
CMakeの使い方に関する詳しい情報は,CMakeのマニュアルを参照してください.

マルチウィンドウサポート

GLFWは複数のウィンドウ生成をサポートしました.各ウィンドウは、それぞれがOpenGLまたはOpenGL ESコンテキストを所有し,すべてのウィンドウ関数はウィンドウハンドルを持ちます.イベントコールバックはウィンドウ毎になり,イベントを受信したウィンドウのハンドルも渡されるようになっています.与えたスレッド上の現在のコンテキストを選択するためにglfwMakeContextCurrent関数が追加されています.

マルチモニタのサポート

GLFWはマルチモニタをきちんとサポートします.glfwGetMonitorsで列挙することができ,各種の取得にはglfwGetVideoModes, glfwGetMonitorPos, glfwGetMonitorName, glfwGetMonitorPhysicalSizeを使います。また、特定のモニタにフルスクリーンウィンドウ表示するための指定が可能になっています.

Unicodeのサポート

GLFW関数へ渡されるすべての文字列引数と戻り値は,UTF-8エンコーディングを使うようになりました.(ASCIIはUTF-8のサブセットなので)拡張関数引数はもちろんのこと,ウィンドウタイトル,エラー文字列,クリップボードテキスト,モニタやジョイスティック名を含みます.

クリップボードテキストI/O

GLFWは、システムクリップボードへのプレーンテキストの書込みおよび読込みをサポートしました.これには,glfwGetClipboardString とglfwSetClipboardString関数を使います.

ガンマランプのサポート

GLFWはモニタのガンマランプの設定と読取りをサポートします.これにはglfwGetGammaRampとglfwSetGammaRamp関数を使います.ガンマ値からランプを生成して設定するglfwSetGammaもあります.
(訳注: ガンマランプとは、「各色成分の強さの段階ごとのガンマ補正後の実際に出力される強さの値」を順に並べた配列で,ガンマ補正のパラメータのようなもの,という認識です)

OpenGL ESのサポート

GLFWはOpenGL ESコンテキストの作成をサポートするようになりました.GLFW_CLIENT_APIウィンドウヒントをGLFW_OPENGL_ES_APIへセットすることによって、OpenGL ESコンテキストの生成がサポートされます.GLFWはOpenGL ES自体を実装しているわけではないので,使っているドライバがGLFWで利用できる方法のサポートを提供しなければならないことに注意してください.最近のnVIDIAとintelドライバはGLXとWGL APIを用いることでOpenGL ESコンテキストの生成をサポートしていますが,AMDはEGL実装を代わりに提供しています.

(実験的な)EGLサポート

GLFWは,CMakeオプションで選択できる,実験的なEGLコンテキスト生成バックエンドを持ちます.

高解像度モニタのサポート

GLFWはWindowsとOS Xの両方で高DPIモニタをサポートします.これは,フル解像度のフレームバッファを与えますが,他のUI要素はスケールアップされます.これを実現するために,glfwGetFramebufferSizeとglfwSetFramebufferSizeCallbackが追加されました.これらはピクセルで動作し,残りのGLFW APIはスクリーン座標で動作します.

エラーコールバック

GLFWは,より詳細な診断情報をアプリケーションへ渡せるエラーコールバックを提供するようになりました.コールバックにはエラーコードと詳細文字列が渡されます.

ウィンドウ単位のユーザポインタ

各ウィンドウはユーザ定義ポインタを持つようになりました.GLFWをC++コードへ統合するのをもっと簡単にするために,glfwGetWindowUserPointerで受け取り,glfwSetWindowUserPointerで設定します.

ウィンドウのアイコン化コールバック

各ウィンドウはアイコン化とその復元イベントのコールバックを持っています.それは glfwSetWindowIconifyCallbackで設定できます.

ウィンドウ位置コールバック

各ウィンドウは,位置イベントのコールバックを備えました.glfwSetWindowPosCallbackで設定できます.

ウィンドウ位置クエリ

ウィンドウ位置をglfwGetWindowPosで取得できるようになりました.

ウィンドウフォーカスコールバック

各ウィンドウはフォーカスイベントコールバックを備えました.glfwSetWindowFocusCallbackで設定できます.

カーソル enter/leave コールバック

各ウィンドウはマウスカーソルがクライアントエリアに入ってきた、あるいは、出て行った時のためのコールバックを持っています. glfwSetCursorEnterCallbackで設定できます.

初期ウィンドウタイトル

作成時にウィンドウタイトルを指定できるようになりました.glfwCreateWindowの引数の一つとして設定します.

隠しウィンドウ

ウィンドウはglfwHideWindowで非表示に,glfwShowWindowで表示できるようになりました.作成時の初期値として非表示にする場合は,GLFW_VISIBLEウィンドウヒントを使います.スクリーンに表示される前に指定した位置へウィンドウを動かすのと同じように,ほとんどのドライバで互換性のあるオフスクリーンレンダリングの実現方法です.

装飾なしウィンドウ

装飾(つまり,フレームやタイトルバーのようなもの)なしのウィンドウモードのウィンドウを作成できるようになりました.GLFW_DECORATEDウィンドウヒントを使います.スプラッシュスクリーンのようなものを作成できます.

修飾キービットマスク

修飾キービットマスクのパラメータが,マウスボタンコールバックとキーコールバックに追加されました.

プラットフォーム依存スキャンコード

スキャンコードパラメータがキーコールバックに追加されました.キートークンを持たないキーでも,GLFW_KEY_UNKNOWNに設定されたパラメータとして渡されて取得可能になっています.これらのスキャンコードは端末によって様々で,キーバインディングのために利用される予定です.

ジョイスティック名

ジョイスティック名をglfwGetJoystickNameで取得できるようになりました.

Doxygen ドキュメント

0 件のコメント:

コメントを投稿