-1

さて、私はこのチュートリアルでopenGLを学んでいます:opengl-tutorial.org。このチュートリアルでは、シェーダーがどのように機能するかについては説明していません。つまり、頂点シェーダーはフラグメントシェーダーの前に読み取られますか?

質問について話します。練習用に2つのオブジェクトを作成します。1つのボックス(テクスチャ付きの3D正方形)とピラミッド(テクスチャ付きの3D三角形)です。方法がわかりません。描画する方法を知っています。 C ++ / OpenGlを使用しますが、GLSLについて話します。別のプログラムを作成する必要がありますか?どうやってやるの?

(OpenGL 3.3)

4

1 に答える 1

3

OpenGLは、あなたが想定しているような方法で「オブジェクト」を維持しません(オブジェクトという用語は、OpenGLが使用し、識別子を介して参照できる内部の「何か」を指すために使用されます。頂点バッファ、テクスチャ、またはシェーダーはすべて「オブジェクト」の例です)。OpenGLはシーングラフではありません。

アプリケーション内の各オブジェクトの頂点データを作成し(またはファイルからそのデータをロードし)、バッファオブジェクトにそのデータをフィードすることでOpenGLに頂点データを提供する必要があります。

次に、OpenGLに、そのバッファからいくつかの頂点を描画するように指示します。OpenGLは、そのデータが何であるか、またはデータをどのように描画するかを気にしません。それはあなたがそれをするように言うことを正確に行うだけです。「頂点座標を含むこのデータブロックを取得し、5つの三角形を描画する」と言うと、それが実行されます。

于 2012-12-01T14:32:26.033 に答える