ccDrawLine不透明?

我对所有这些OpenGL调用都很陌生,幸好cocos2d很容易让我在屏幕上画线,如下所示:

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

我得到一条白线。

但现在,我想使它变得透明一点,所以我把alpha值改为100.但是,线条仍然是亮白的。 然后我认为这个值实际上可以从0.0到1.0。 我把它设置为0.2,但仍然没有改变。

这是为什么?

您肯定需要先启用混合:

 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)。 使用任何你感到舒服的。

祝你好运!

我不是Cocos2d的专家,但OpenGL本身需要打开alpha混合。 它是glEnable(GL_BLEND) ,默认是禁用的。 另外,你应该检查glBlendFunc()函数来设置合适的混合函数。 通常alpha参数的参数是glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);