複数の場所で、パフォーマンスのためにテクスチャアトラスを使用することをお勧めします。Appleは関数gltexcoordpointerを提案しています。私の例では、正方形の列があり、それぞれにランダムなテクスチャが与えられています。すべてのランダムテクスチャをスーパーテクスチャに入れました。問題は、texcoordarrayを作成できないように見えることです。gltexcoordpointerが選択したサブテクスチャを頂点座標にどのように評価するかについての情報が見つかりません。頂点はtriangle_stripを使用して描画されるのが理想的ですが、三角形も同様に機能します。
2410 次
2 に答える
1
glTexCoordPointer
圧縮されているかどうかにかかわらず、テクスチャをまったくレンダリングしたい場合は、 を使用する必要があると思います。ただし、UV 座標系内でテクスチャをシフトしたい場合は、いつでもテクスチャ座標配列の個々のエントリを完全に自由に操作できます。次のような関数を使用します。
- (void) shiftTextureUVY:(float)shift {
textureVertices[1] += shift;
textureVertices[3] += shift;
textureVertices[5] += shift;
textureVertices[7] += shift;
}
- (void) shiftTextureUVX:(float)shift {
textureVertices[0] += shift;
textureVertices[2] += shift;
textureVertices[4] += shift;
textureVertices[6] += shift;
}
を使用して基本的なTextureAtlas
クラスを作成しGL_TRIANGLE_STRIP
ます。これで本当にファンキーになり、同様の方法で反射と歪みを行うことができると思います。
于 2009-11-09T04:49:30.577 に答える
0
gltexcoorpointer は、テクスチャ座標を 1 対 1 で割り当てます。そのため、三角形として描画し、多くの頂点を繰り返さなければなりませんでした。頂点を共有できなかった理由は、共有された頂点が同じテクスチャ 座標を持っているためです。
于 2009-03-28T17:40:04.827 に答える