2011-07-11 14 views
2

私はこの種の機能をDirectXアプリケーションでのみ見てきました。ウィンドウのサイズを変更すると、レンダリングもそれに応じて伸びて、実際に伸びたテクスチャのように見えます。低解像度のシーンをフルスクリーンのネイティブ解像度にレンダリングする方法は?

これをOpenGLで効率的に行うにはどうすればよいですか?この目的は、ネイティブ解像度のフルスクリーンアプリケーションを作成することです。なぜなら、LCD画面では低い解像度を選択するのが難しく、FPSを高くするために解像度を低くしてレンダリングできるからです。

答えて

2

テクスチャまたはレンダバッファにレンダリングし、次に実際のデフォルトのフレームバッファにglBlitFramebufferを割り当てる必要があります。その後、通常の方法でバッファを交換します。

+0

これは、最も後方互換性があり、効率的です:テクスチャまたはレンダバッファ? – Rookie

+0

@Rookie:パフォーマンスについて知る方法はありません。私は、レンダバッファが速くなると思いますが、どちらも他のものよりも非常に遅くなることはありません。 FBOとFBOの両方をサポートする必要があります。 –

-1

最終的にOpenGLによってレンダリングされるウィンドウの部分(ピクセル単位)をOpenGLに通知するには、glViewport()を呼び出します。描画している「ワールド」のパラメータを設定するには、glFrustum()、glOrtho()、またはglOrtho2D()などのメソッドを使用します。

イベントを処理してウィンドウがサイズ変更されている場合は、glViewport()を再度呼び出して、ビューポートのサイズをそれに応じて更新することができます。

あなたの世界が正方形(たとえば)で、ビューポートが長方形の場合、それはあなたが参照している効果があります(実際にはテクスチャのように伸びます)。

+1

-1:それは彼が求めたことをしません。これは、サイズ変更可能なウィンドウにレンダリングする方法です。彼が望むのは、_fixed_であるネイティブ解像度を持つことです。ウィンドウがサイズを変更した場合、_image_を伸ばします。彼はウィンドウの解像度にレンダリングしたくない。 –

関連する問題