4

レイヤード レンダリングでは、2D テクスチャ配列 (GL_TEXTURE_2D_ARRAY) を作成することを読みました。

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D_ARRAY, TextureColorbufferName);
glTexParameteri(....
glTexImage3D(...

FBO にアタッチできます。

glGenFramebuffers(1, &FramebufferName);
glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, TextureColorbufferName, 0);

視覚的に理解するのが難しいのは、FBO でテクスチャのレイヤーを単一の色のアタッチメント ポイントにバインドする方法です。カラーアタッチメント 0 (または GL_COLOR_ATTACHMENTi のいずれか) は、それ自体が単一の「イメージ」ではありませんか?

さらに詳細に:

テクスチャ配列について読む前に、これが私の FBOS の理解でした。

                      +--------------+
         +-----------+| FBO object   ++--------------------------------------------+
         |            |              +---------------------+                       |
         |            +--------------+                     |                       |
         |                     +                           |                       |
         |                     |                           |                       |
         |                     |                           |                       |
         v                     v                           v                       v
 +-----------------+     +-----------------+      +-----------------+       +------------------+
 |color attachment |     |color attachment |      |depth attachment |       |stencil attachment|
 |    0            |     |   1             |      |                 |       |                  |
 +-----------------+     +-----------------+      +-----------------+       +------------------+
                                                                               (this too)
  (this is actually        (this is also a                (this too)
   one texture or          texture of renderbuffer)
    one renderbuffer)

しかし、テクスチャ配列について読んだ後、これは本当にそうなのですか?

                          +--------------+
             +-----------+| FBO object   ++--------------------------------------------+
             |            |              +---------------------+                       |
             |            +--------------+                     |                       |
             |                     +                           |                       |
             |                     |                           |                       |
             |                     |                           |                       |
             v                     v                           v                       v
     +-----------------+     +-----------------+      +-----------------+       +------------------+
     |color attachment |     |color attachment |      |depth attachment |       |stencil attachment|
     |    0            |     |   1             |      |                 |       |                  |
     +-----+--+------+-+     +-----------------+      +-----------------+       +------------------+
           |  |      |
           |  |      v+
           |  v+      +----------------------------------+
           |   +--------->+                              v
           v              |                              +
  +----------------+  +---v-------------+                |
  |                |  |                 |            +---v------------+
  |texture array[0]|  |texture array[1] |            |texture array[n]|
  |                |  |                 |            |                |
  |                |  |                 |            |                |
  |                |  |                 |            |                |
  +----------------+  +-----------------+            +----------------+

つまり、各アタッチメント自体がさまざまなテクスチャのコレクションですか?

これは、1 つのカラー アタッチメント ポイントが複数のテクスチャにどのようにマッピングされるかを視覚化するのが難しいです。

1 つの FBO (texture_2d_array にバインドされているもの) から別の FBO (texture_2d_array にバインドされているもの) にブリットするとどうなりますか

4

1 に答える 1

5

テクスチャは画像の集まりです。FBO アタッチメント ポイントにテクスチャをアタッチしません。テクスチャ内の画像を FBO アタッチメント ポイントにアタッチします。

したがって、単一のアタッチ ポイントに複数のテクスチャをアタッチすることは決してありません。

配列テクスチャは、ミップマップ レベル内に画像の配列を格納する単なるテクスチャです。非配列 2D テクスチャは、ミップマップ レベルごとに 1 つの画像のみを格納します。キューブマップは、ミップマップごとに 6 つの画像を格納します。配列テクスチャには、ミップマップごとにユーザーが指定した数の画像が格納されます。

ただし、レイヤー化されたイメージをアタッチ ポイントにアタッチすることはできます。配列テクスチャのミップマップ レベルは、他のいくつかのものと同様に、レイヤー化されたイメージです。

レイヤー化された画像から構築された FBO は、ジオメトリ シェーダーを介してレイヤー化されたレンダリングに使用できます。これにより、GS は特定のプリミティブ出力を階層化された FBO 内の特定のレイヤー インデックスにパイプすることができます。

これをどのように視覚化するかはあなた次第です。

于 2013-08-17T09:34:38.587 に答える