2009-08-24 23 views
1

OpenGLレンダリングで使用するテクスチャの明るさを上げたい。赤や白を明るくするなど。これはすべてのスプライトがOpenGLポリゴンにテクスチャとしてマッピングされる2Dレンダリング環境です。 私はデータを操作することはほとんど何も知らないし、私のエンジンはテクスチャキャッシュを使って作業するので、サーフェス全体を変更すると、テクスチャを使用するすべてのものに影響します。 "マスク"を付けてオーバーレイすることでエフェクトをシミュレートすることができます。スプライトを単色にすることができますが、それはメモリを使い果たします。 これに他の解決策がある場合は、OpenGLテクスチャの明るさを変える

答えて

2

あなたの要件があれば、これを行う非常に単純なGLSLフラグメントシェーダを書くことができます。それは文字通り1つのライナーです。
のような何か:おそらく

uniform sampler2d tex; 
void main() 
{ 
    gl_FragColor = texture2d(tex, gl_TexCoord[0]) + gl_Color; 
} 
+0

+1。とにかく固定されたピンプラインの代わりにシェーダを使用するように移動するべきでしょう。それはずっと柔軟です – jcoder

0

GL_MODULATEを使用すると、テクスチャの色に現在の色を掛けることができます。
this pageのテクスチャチュートリアルを参照してください。

+0

これはあまりうまくいかず、デフォルトのようですので、すでに使用しています。スプライトを使用し、色(1,0,0)(フルレッド)を設定すると、文字通りスプライトから緑と青が削除されます。他の2つのコンポーネントを削除する代わりに、実際の赤を追加したいと思います。例を挙げれば、 –

関連する問題