ccDrawLine不透明度?

时间:2012-02-13 14:33:54

标签: objective-c ios opengl-es cocos2d-iphone

我对所有这些OpenGL调用都很陌生,但幸运的是cocos2d很容易让我在屏幕上绘制线条,如下所示:

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

我得到一条白线。

但是现在,我想让它有点透明,所以我将alpha值更改为100.但是,该线仍然是明亮的白色。然后我假设这些值实际上可以从0.0到1.0。我把它设置为0.2,但仍然没有变化。

为什么?

2 个答案:

答案 0 :(得分: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)。使用您感觉舒适的。

祝你好运!

答案 1 :(得分:1)

我不是Cocos2d的专家,但OpenGL本身需要打开alpha混合。默认情况下已停用glEnable(GL_BLEND)。此外,您应该检查glBlendFunc()功能以设置正确的混合功能。 alpha混合的常用参数是glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

相关问题