2012-02-13 122 views
2

我是很新的所有OpenGL調用,但幸運的cocos2d會很容易讓我畫線在屏幕上,就像這樣:ccDrawLine不透明度?

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

而且我得到了白線。

但是現在,我想讓它變得有點透明,所以我將alpha值更改爲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

您也可以使用'ccDrawColor4B(255,255,255,100)'而不是'glColor4ub()'。 – Clay 2012-06-14 18:00:11

1

我不是Cocos2d的專家,但OpenGL本身需要打開alpha混合。這是glEnable(GL_BLEND)這是已禁用默認情況下。此外,您應該檢查glBlendFunc()函數以設置適當的混合功能。對於阿爾法混合通常PARAMS是glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);