iPhoneで画像ストレッチ効果を作ろうとしています。頂点配列を作成し、背景画像の任意の半径内の各インデックスのテクスチャデータをシフトします。次に、次の呼び出しを行って表示します。
int n = gridSize_.x * gridSize_.y;
glEnableClientState( GL_VERTEX_ARRAY);
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glVertexPointer(3, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, texCoordinates);
glDrawElements(GL_TRIANGLES, n*6, GL_UNSIGNED_SHORT, indices);
//if(num_myindices > 0)
// glDrawElements(GL_TRIANGLES, num_myindices*6, GL_UNSIGNED_SHORT, myindices);
glDisableClientState(GL_VERTEX_ARRAY );
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
私の問題は、引き伸ばされた領域の端が32x32や64x64のような比較的小さなグリッドサイズで非常に途切れ途切れに見えることです。大きくするとスムーズになりますが、はるかに遅くなります。
そこで、背景画像のコピーを追加して、頂点配列を影響を受けるインデックスのみに制限してみました。私ははるかに小さいグリッドサイズを使用しますが、より小さな領域に使用します。上記の描画コードは次のようになります。
//glDrawElements(GL_TRIANGLES, n*6, GL_UNSIGNED_SHORT, indices);
if(num_myindices > 0)
glDrawElements(GL_TRIANGLES, num_myindices*6, GL_UNSIGNED_SHORT,myindices);
影響を受けた領域は表示されますが、背景画像が点滅して消えるように見えます。引き伸ばされた領域は黒い背景に浮かんでいます。明らかに、私の背景が最初にレンダリングされ、次に上記のコードが頂点配列のデータのみを上書きしてレンダリングします。
画像の描画を効率的に組み合わせる方法について誰かアドバイスがありますか?
背景用に2番目の単純な頂点配列を作成し、ifステートメントの直前にglDrawArrayを呼び出して、すべての描画が1つのメソッドで行われるようにする予定です。これはこれについて行く正しい方法ですか?もっと良い方法はありますか?どういうわけか、すべての画像データを1つの単純な頂点配列に結合する必要がありますか?