2012-03-20 21 views
1

私は現在、フォントを提供するテクスチャを持っています。これは、iPhone用のOpenGLの最上位(最後)レンダリングにあります。テクスチャは透明なサラウンドの白いグリフです。私の目的は、効果的にフォントの色を変更する、テクスチャにオーバーレイされた別の色を持つことです。OpenGL ES 1.1フォントオーバーテクスチャ

アルファ値が255に設定されている場合、下のコードを使用してテクスチャに無地の色を付けることができます。私の目的は、プログレッシブな色をフェードアウトさせることです。色(0,0,255,127) 。これは、部分的に透明な青色でなければなりません。しかし、私はglTexEnv()設定で何度も試してみましたが、非単色のオーバーレイを作ることはできません。

glBlendFunct(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glEnable(GL_BLEND); 
glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, fontTexture); 
glColorub(0,0,255,255); 
... 
glDrawElements(...); 

私はのタイトルの下に、OpenGLのwikiページhttp://www.opengl.org/wiki/Texture_Combinersでの提案を試してみました:「例tex0のアルファに基づいてブレンドtex0とTEX1」。また私はここに見つけた考えを試みたOpenGL ES 1.1: How to change texture color without losing luminance?

フォント/文字のアウトラインを失うことなく、色(0,0,255,127)を作ることができる設定があれば、

PS。もう1つのアイデアは、前の例では(0,0,255 *(127/256)、127)などの事前に乗算されたアルファ色を渡すことでしたが、これはあまり優雅ではないようです。

EDIT:明確にするために、文字のテクスチャが完全な不透明度を維持し、変更するためにオーバーレイを塗りつぶすことを意図しています。したがって、例はフル・ブルーからフル・ホワイトに変わるはずです。

答えて

0

あなたはglBlendFuncパラメータを変えなければならないと思います(ところで、glBlendFunctではタイプミスがあります)。

glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 

作品:私はそれを設定するために http://pyopengl.sourceforge.net/documentation/manual/glBlendFunc.3G.html

はこれを見てください。

希望すると助かります...

+0

答えてくれてありがとうございます。残念ながら、これは上記と同様の結果をもたらす。試してみると(0,0,255,40)、テクスチャ全体がほぼ透明になります。可能であれば、必要な結果は背景のテクスチャ(完全な255アルファ)で、明るい青が上に表示されます。したがって、ユーザーには、色は薄い青ですが、文字は完全に不透明です。 – Overflowed

+0

Mmm ...私はまだあなたがglBlendFuncを通してあなたの目標を達成すべきだと思います。他の可能なパラメータで遊んだことがありますか? – Beppe