より大きなフレームバッファの取得
&glfwCreateWindow()
に大きな値を指定して呼び出すことで、大きな初期フレーム バッファを取得し、すぐに必要な実際の初期ウィンドウ サイズを使用して小さいウィンドウの表示に切り替えます。width
height
glfwSetWindowSize()
または、次のように、独自のフレームバッファ サイズのコールバック関数を使用して登録 glfwSetFramebufferSizeCallback()
し、必要に応じてフレームバッファを大きなサイズに設定します。
void custom_fbsize_callback(GLFWwindow* window, int width, int height)
{
/* use system width,height */
/* glViewport(0, 0, width, height); */
/* use custom width,height */
glViewport(0, 0, <CUSTOM_WIDTH>, <CUSTOM_HEIGHT>);
}
更新:ウィンドウ
のサイズ変更 (およびウィンドウのドラッグ) 操作中に見られるレンダー パイプラインの停止は、ウィンドウ マネージャーに実装されているブロック動作が原因です。
アプリでこれを軽減するには、ウィンドウ メッセージのハンドラー関数をインストールし、メイン アプリ (GUI) スレッドから独立した別のスレッドでレンダリング パイプラインを実行する必要があります。
高 DPI サポート
GLFWのドキュメントには次のように書かれています:
GLFW は、Windows と OS X の両方で高 DPI モニターをサポートするようになり、他の UI 要素が拡大されるフル解像度のフレームバッファーを Windows に提供します。これを実現するために、glfwGetFramebufferSize()と
glfwSetFramebufferSizeCallback()が追加されました。これらはピクセルで動作しますが、残りの GLFW API は画面座標で動作します。
私の知る限り、それはドキュメントの高DPIに関するほとんどすべてのようです。
コードを調べると、Windows ではglfw が にフックし、 platformInit 中にそれSetProcessDPIAware()
を呼び出すことがわかります。現在、Mac で高 DPI をサポートする同様のコードを見つけることができません。