私はすでに進行中のゲームのアイデアを実装するためにエンジン(http://b2dengine.com/)に取り組んでいます。今、私はかなり長い間、テキストレンダリングに関するこの問題に悩まされています。
1つのpng画像にサポートされている/必要なすべての文字を含むテクスチャアトラスがあります。文字マッピングはFont
クラスによって定義されます。すべてが正常に機能し、文字が正しく正確にレンダリングされます。テキストの色を変更する機能も必要です。これは聞こえます、そして私はそれが単純であるに違いありません、しかし私はそれを機能させることができません。
このglブレンド関数を使用して、目的の効果を取得しています。
GL.instance.glBlendFunc(GL.instance.GL_SRC_ALPHA, GL.instance.GL_ONE_MINUS_SRC_ALPHA);
ほとんどの場合、色がやや暗い限り、うまく機能します。しかし、白に設定すると、アーティファクトが表示されます。必要に応じてスクリーンショットを提供できます。また、これが機能するには、テクスチャの「テキスト」が白である必要があります。
私はopengl1.1を使用しています(はい、古いことは知っていますが、シェーダーの準備ができていません)。
つまり、私の質問は、テクスチャをレンダリングして色を完全に置き換える方法です。アルファチャネルのみを保持します。たとえば、pngで黒と80%の透明度がある場合、レンダリングするときに、画面上で80%の透明度で緑にします。