サブピクセルレンダリングを使用するOpenGLに基づくUIシステムの高速テキストレンダリングを作成しています.黒い背景上の白いテキストは「通常の」ブレンディングでうまく機能しますが、白い背景上の黒いテキストはそうではありません.サブピクセルレンダリングのカラーフリンジのためです.が 0 倍され ( が黒であるため)、サブピクセル エイリアシングが失われます。
これが「正しい」方法ではないことはわかっていますが(R、G、Bの各サブピクセルチャネルを個別にブレンドする必要があるため)、非常に高速で、ほとんどすべての状況で見栄えがします。
これを行うには、ブレンドが行われる「前に」テクスチャの色を反転する必要があります。次に例を示します。
通常のブレンドは次のとおりです。SourceColor * SourceAlpha + DestColor * (1 - SourceAlpha)
これ欲しい:((1,1,1) - SourceColor) * SourceAlpha + DestColor * (1 - SourceAlpha)
シェーダーなしでこれを行う方法はありますか?? 重要なのは、異なるブレンド設定で2つのパスを実行することだと思いますが、うまくいきません
通常のテクスチャと反転したテクスチャの 2 つを使用できることはわかっていますが、ビデオ メモリを無駄にしたくありません (各フォントには既に大きなテクスチャが必要なため)。