フロントエンドOpenGLレンダリングの原理を理解することで(1)

 

、OpenGLの

OpenGLは、APIを描く3Dグラフィックスのセットですが、また、2Dオブジェクトを描画するために使用することができます。OpenGLは、動作モデルと写真で使用できる機能の大規模なセットを持って、通常のOpenGLグラフィックスライブラリで書かれては、メーカーです。私たちは、OpenGLの特定のバージョンをサポートするグラフィックスカードを購入します。

図は、キューブを回転OpenGLを使用して行われます。

レンダリングの第二に、原則

2.1レンダリングパイプライン

OpenGLのでは、3D空間内のすべて、および当社のスクリーンとウィンドウです、あなたは2D座標に、2DのOpenGL 3D座標変換すること、そしてそれを実行する必要があるようにはレンダリングパイプラインOpenGLです(グラフィックスパイプライン)。

レンダリングパイプラインは、2つの部分に分けることができる:2D座標への最初の変換3D座標、2Dピクセルの実際の座標に第2の部分を変換します。

シェーダ2.2

一般的に、3次元のセットを変換するレンダリングパイプラインは、手順の多くを通過する画面上の2D着色画素に座標。次のステップは、各ステップは、特定の機能を有し、容易に同時に実行することができ、すべてのステップは、高度に特異的であり、入力として出力されます。シェーダプログラム(と呼ばれるこれらの小さなプログラムがあり迅速にレンダリングパイプラインのデータを処理するグラフィックス処理コアの数千であり、これらは、GPU上で実行されている小さな複数のプログラムにより、各ステップで処理され、そしてシェーダ)。

これらのシェーダのいくつかは、開発者は、レンダリングプロセスを私たちに、より自由にかつきめ細かく制御可能にし、既に存在するものを置き換えるために、必要に応じて、自分のシェーダを設定でき、設定可能です。彼らはGPU上で実行されるため、同時に、我々はGPUを与えた貴重な時間を保持し、通常の開発では、我々はパフォーマンスを向上させるために、GPUレンダリングソフトウェアを利用する必要があります。

GLSLシェーダは、通常の書き込みに使用し、OpenGLのシェーディング言語を表します。

例えば、2.3の場合

図は、青色のは、我々は独自のシェーダを注入することができるである抽象のレンダリングパイプラインのステップを示しています。

我々は、多くのステップを経るフルピクセルに頂点データをレンダリングする必要があり、数字によって各ステップとコードの後、私たちの簡単な説明を見つけました。

我々は、データ、頂点データのセット、すなわち、三角形のデータは、レンダリングパイプラインで構成することができる3D座標の組を渡します。頂点データは、頂点の集合であり、頂点は、3次元座標の集合です。

最初のステップは、レンダリングパイプラインの頂点シェーダ(頂点シェーダ)です。私たちはここに渡されたシンプルな頂点である、頂点シェーダは、私たちは、このような頂点属性などのいくつかの基本的な処理操作を、行うことができます。

組立の初期段階で、すなわち、頂点シェーダ頂点は、元の出力の形状を形成することから、組立ステージ形状。なお、本実施形態では、頂点は三角形出力に形成されています。

取付ジオメトリシェーダ段への初期段階から、我々は別の頂点を発散することによって新たなパターンを形成することができ、本実施形態では、第2の三角形に形成されています。

テッセレーションシェーダステージにおいて、分析描画プロトタイプの段階は、図のいくつかの小さなプロトタイプに分割されます。本実施形態では、より平坦な、滑らかな環境を作成するために、より多くの三角形を形成することができます。それは理解しにくいかもしれないが、我々は次の図のさらなる詳細を組み合わせて、それがサブディビジョンサーフェスシェーダの役割です。

次の段階は、サブディビジョンサーフェスシェーダラスタ化ステージ(Rasterzationステージ)、最終的なプロトタイプのマッピングを行うと、画面上の対応するピクセルをレンダリングすることになる。この段階、形成フラグメント、使用の次の段階のためにフラグメントシェーダであります。

フラグメントシェーダ主な使命は、この段階では、我々はいくつかの高度なOpenGLの効果を使用することができ、ピクセルの最終的な色を計算することです。フラグメントシェーダは、典型的には、照明、陰影、カラーなどを含む、3Dデータインタフェースを複数含みます。

すべての対応する色が決定されると、最終プロトタイプは最終段階に渡されます、我々はアルファテストとブレンド段階呼び出します。このフェーズでは、他の色を使用することが可能であることを、他の背後にあるオブジェクトとすることができるようなオブジェクトの適切な深さを決定する、またはオブジェクトがブロックされている場合、切断されてもよいです。

上述したように、我々は、全体のレンダリングパイプラインステップとロジックを見ることができるステップの数は変えることができる含む、非常に複雑であるが、我々は、一般的にのみ頂点シェーダ及びフラグメントシェーダを操作する、我々他の直接シェーダーデフォルトを使用します。実際のOpenGLのプログラミングでは、我々は、少なくとも頂点シェーダとフラグメントシェーダを定義する必要があります。(OpenGL 3.1バージョンの前には、固定回線コアから削除3.1バージョンから、固定されたラインを含む、私たちは仕事にシェーダを使用する必要があることに留意されたいです)。

第三に、要約

この一連の記事については、この記事の最初の記事は、簡単にOpenGLのの原則のいくつかを説明し、フォローアップ記事では、座標系(シェーダ(シェーダ)、テクスチャ(Textture)、変形(変換)、座標系を含む新しいコード分析を、追加します)、カメラ(カメラ)など。

著者:崔ディ

おすすめ

転載: www.cnblogs.com/yixinjishu/p/11269220.html