2012-02-13 15 views
2

私はすべてのそれらのOpenGLの呼び出しに非常に新しいですが、幸いcocos2dは簡単にこのように、私は、画面上に線を引くようになる:ccDrawLine不透明度?

-(void)draw { 
    glColor4f(255, 255, 255,255); 
    ccDrawLine(ccp(150,110), ccp(280,230)); 
} 

そして、私は白いラインを取得します。

しかし、今は透明にしたいので、アルファ値を100に変更します。ただし、線はまだ明るく白です。次に、値が実際には0.0〜1.0の範囲にあると仮定しました。私は0.2に設定しましたが、まだ変更はありません。

なぜですか?

答えて

4

です:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glColor4ub(255, 255, 255,100); 
ccDrawLine(ccp(0,110), ccp(280,230)); 

も ながら「glColor4ub」は「符号なしバイト(パラメータごとに0〜255)にかかることに注意してくださいglColor4f "は4つの浮動小数点数を取ります(各パラメータで0〜1.0)。あなたが快適であれば使用してください。

幸運を祈る!

+0

'glColor4ub()'の代わりに 'ccDrawColor4B(255,255,255,100)'を使うこともできます。 – Clay

1

私はCocos2dの専門家ではありませんが、OpenGL自体ではアルファブレンディングをオンにする必要があります。それはglEnable(GL_BLEND)です。が無効にされています。デフォルトではです。また、適切なブレンディング機能を設定するには、glBlendFunc()機能をチェックする必要があります。アルファブレンディングのための通常のparamsは、あなたは間違いなく最初のブレンド有効にする必要がありglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);