5

iOS5.0フレームワークのGLKitについて簡単な質問があります。

GLKTextureLoaderを使用する場合、現在アクティブなテクスチャユニットにテクスチャをロードするだけですか?例を見てきましたが、変数xのGLKTextureInfoがGL_TEXTURE0にバインドされていると言わなければならないところはどこにもありません。

人々がglActiveTextureをGLKTextureLoaderと組み合わせて使用​​する例を見てきましたが、テクスチャが自動的にアクティブなテクスチャユニットにロックされているように見えます。ロードしたら、テクスチャ座標を渡すだけですか?

前もって感謝します。

4

2 に答える 2

4

GLKTextureLoader が GLKTextureInfo オブジェクトをロードしたら、テクスチャを自分でバインドする準備が整います。したがって、GLKLTextureLoader がロードを完了すると、ロードされたテクスチャはどのテクスチャ ユニットにもバインドされません。描画する準備ができたら、次を呼び出します。

glActiveTexture(GL_TEXTURE0); // to specify texture unit 0
glBindTexture(textureInfo.target, textureInfo.name);

Learning OpenGL ES for iOS: A Hands-On Guide to Modern 3D Graphics Programmingという本を強くお勧めします。これは、GLKit クラス内で何が行われているかを示す素晴らしい仕事をしているからです。GLKTextureLoader を使用する、私が書いたこのデモ コードを参照することもできます: https://github.com/joekim/MobileMeetup/tree/master/GLKitDemo

于 2012-10-20T01:57:00.103 に答える
2

はい、オートマジックが進行中です。2 番目のテクスチャをロードした後、そのテクスチャは GL_TEXTURE0 にバインドされますが、GL_TEXTURE1 でそれが必要な場合:

glActiveTexture(GL_TEXTURE1);
glBindTexture(someTexture.target, someTexture.name);
glUniform1i(u_someSampler, 1); // u_someSampler retrieved from prev call to glGetUniformLocation
于 2014-03-08T09:48:14.193 に答える