私はIOS用の小さな2Dレンダリングエンジンに取り組んでいます。さまざまなテクスチャにある多くのスプライトをレンダリングしたいと思います。これで簡単に聞こえます...同じテクスチャに属するすべてのスプライトをレンダリングして次のスプライトに移動するだけです...しかし、異なるテクスチャを持つプリミティブのオーバーラップを処理するにはどうすればよいですか?
写真とまったく同じようにレンダリングしたい(重ねて)。つまり、テクスチャを3回切り替える必要があります。そのような混合スプライトが何百もある場合はどうなりますか?クライアントでのテクスチャの切り替えを回避し、すべてのスプライトを1回のショットでレンダリングするため。フラグメントシェーダーで次のコードを使用しています。
if(txt >= 0.5)
gl_FragColor = texture2D(texture1, texCoords)* clr;
if (txt >= 1.5)
gl_FragColor = texture2D(texture2, texCoords)* clr;
if (txt >= 2.5)
gl_FragColor= texture2D(texture3, texCoords)* clr;
if (txt >= 3.5)
gl_FragColor = texture2D(texture4, texCoords)* clr;
if (txt >= 4.5)
gl_FragColor = texture2D(texture5, texCoords) * clr;
動的分岐のため、デバイスで実行しているパフォーマンスの問題があります。より良い解決策はありますか?