28

なぜglActiveTexture必要なのかを理解する方法を見つけています。私は以下のコードを持っています:

glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);

GL_TEXTURE_2Dが壁に掛かっている写真のフレームでtextureIdあり、実際の写真であると想像すると、glBindTextureフレームに実際の写真を割り当てるための唯一のコマンドです。GL_TEXTURE0glActiveTexture

以下の私のコードは正常に機能しますか?

glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);

glActiveTexture(GL_TEXTURE1);
glTexImage2D(GL_TEXTURE_2D, .....)
glTexParameteri(GL_TEXTURE_2D, ...)

私は現在OpenGL2.1を使用しています。

4

2 に答える 2

34

GL_TEXTURE_2Dが壁に掛かっている画像のフレームであり、textureIdが実際の画像であると想像すると、

実際、非常に良い例えです:)

では、GL_TEXTURE0とglActiveTextureは何ですか?

複数の額縁があり、最初のフレームにはGL_TEXTURE0、2番目のフレームにはGL_TEXTURE1というラベルが付いている壁について考えてみてください。

于 2013-01-09T09:06:05.360 に答える
20

OpenGLは、ある時点でマルチテクスチャを導入しました(これは、基本的に1つのジオメトリパスで複数のテクスチャを使用しています)。古いコードを機能させ続けるために、すべての関数にパラメーターを追加することはできませんでした。そのため、アドレス指定するテクスチャユニットを明示的に指定する必要があります。

于 2013-01-09T15:00:53.183 に答える