回答:
いつでもlooongバッファの "vertex; texcoord"を繰り返すことができます。そして、あなたが言った方法のインデックスを使用してください。それはおそらく最も簡単で、あなたが知っているものに少し似ています。
メモリを節約したい場合。かなりきちんとした解決策があり、1つのスプライトをバッファに1つにまとめてtexcoordsを作成し、UV変換行列を作成してシェーダに送信し、texcoordsを(頂点シェーダで)乗算します。
あなたがそれでうまくいかなければ、あなたは自分で行列を作成する必要はありません。通常のGL関数を使用するだけで、glGetFloatv
関数で行列を読み取ることができます。このような:
glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);
私はそれをよりよく説明するために画像を作成しました。glTranslateとglScaleは、UV空間ベースで移動しているように見えます。
シェーダーにマトリックスを送信する方法がわからない場合は、コードを共有できます。
編集:画像を追加
(私が使用したスプライトシートのソース:funorb.com)