我想在绿色背景上绘制一个完全透明的矩形。透明矩形在它自己的EAGLLayer(在UIView中)。背景图层是cocos-2d视图的一部分。我清除EAGLLayer的代码如下:
glClearColor(clearColor.x, clearColor.y, clearColor.z, 0.0f/*clearColor.w*/);
//////////////////////////////////////////////////////////////////////////////
//dont f-word touch this unless you have a very good reason
//if you do f-word with this, reprofile the ios version with the opengl analyzer
glDepthMask(GL_TRUE);
glClearDepthf(0);
glClearStencil( 0 );
glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
我还打开了open gl混合状态,你可以看到它们:
GLint srcRGB;
GLint srcAlpha;
GLint dstRGB;
GLint dstAlpha ;
glGetIntegerv( GL_BLEND_SRC_RGB, &srcRGB );
glGetIntegerv( GL_BLEND_SRC_ALPHA, &srcAlpha );
glGetIntegerv( GL_BLEND_DST_RGB, &dstRGB );
glGetIntegerv( GL_BLEND_DST_ALPHA, &dstAlpha );
printf("src rgb: %x, src alpha: %x dst rgb: %x, dst alpha: %x\n", srcRGB, srcAlpha, dstRGB, dstAlpha);
// PRINTS: src rgb: 302, src alpha: 1 dst rgb: 303, dst alpha: 1
// ( 0x302 is GL_SRC_ALPHA, and 0x303 is GL_ONE_MINUS_SRC_ALPHA )
我希望居中的矩形不可见,但它却是浅绿色,如下所示:
如果我将背景颜色更改为红色,则内部矩形变为浅红色。所以alpha混合工作正常,它只是不够工作。
有关如何调试此内容的任何建议吗?