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);