OpenGL でスケーリングするときにピクセル化された線を実現するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-06 01:38:02
オリジナル
635 人が閲覧しました

How to Achieve Pixelated Lines When Scaling in OpenGL?

OpenGL での単一ピクセル ラインのスケーリング

レトロな 2D ピクセル グラフィックスをレンダリングする場合、ピクセル化には低い内部解像度を使用し、出力をより大きな解像度にスケーリングするのが一般的です。画面。ただし、GL_LINE_LOOP プリミティブをスケーリングすると、ピクセル化されない線が発生する可能性があります。

問題の理解

OpenGL の glOrtho 関数は、原点が左下隅にあり、右上。 glOrtho(0, 320, 240, 0, 0, 1) を呼び出すことで、320x240 の仮想キャンバスを定義します。

ただし、glViewport 関数を使用して出力を拡大縮小する場合、仮想キャンバスのサイズは物理的に変更されません。 。代わりに、プリミティブはフル出力解像度 (960x720 など) で描画され、その後拡大されます。この結果、ピクセル化された四角形は生成されますが、線はピクセル化されません。

正しいアプローチ

推奨される解決策は、必要な仮想解像度 (この場合は 320x240) のテクスチャにレンダリングしてから、そのテクスチャを描画することです。希望の出力解像度 (960x720) でウィンドウに表示されます。これにより、プリミティブが仮想解像度でレンダリングされ、ピクセル化された外観が維持されます。

実装手順

  1. サイズ 320x240 のテクスチャを作成します。
  2. テクスチャをフレームバッファ オブジェクト (FBO) にアタッチします。
  3. レンダリング用に FBO をバインドします。
  4. ビューポートをテクスチャのサイズ (320x240) に設定します。
  5. FBO のバインドを解除します。
  6. ビューポートを出力ウィンドウのサイズ (960x720) に設定します。
  7. テクスチャをテクスチャ ユニットとしてバインドします。
  8. 適切な座標を使用して出力ウィンドウにテクスチャを描画します。

このアプローチにより、線が仮想解像度で描画され、より高い解像度にスケールアップされた場合でもピクセル化された外観が維持されます。出力解像度。

以上がOpenGL でスケーリングするときにピクセル化された線を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート