私が抱えている問題を詳しく説明する前に、より多くのコンテキストが必要です。FontRenderer
テキストをレンダリングするクラスを作成しました。実行時にABCという文字列を表示するGameObject
と、アトラス テクスチャから検索されたすべてのグリフの UV 座標を持つ 3 つのクワッドが生成されます。
十分に単純です。これにより、同じマテリアルが使用されている場合、単一のドローコールが可能になります。
ただし、特定のグリフの前景を変更するなどの機能を追加する場合、この問題にどのように対処すればよいでしょうか? \c
次のようなエスケープ シーケンスを計画しています\c[A-F]{2}[A-F]{2}[A-F]{2}
。
たとえば、AをABCFontRenderer
赤で、残りの文字列を白に色付けする場合、次の文字列を:に渡します"\cFF0000A\cFFFFFFBC"
。
最初に考えたのは、アトラス テクスチャを利用することでした。この背後にある考え方は、新しい前景色で新しいグリフをプロットし、アトラス テクスチャ内にスプライトを割り当てることです。ただし、これは非常に複雑になる可能性があります。
私の次のアイデアは、頂点/フラグメント シェーダーを使用することでしたが、これが可能かどうかはわかりません。もう 1 つの問題は、可能であれば、私のシェーダーを使用するマテリアルのインスタンスがレンダリングされた文字列ごとに必要になり、ドロー コールの数が増えることです。
他にどのような方法がありますか?