如何使我的OpenGL图层透明?

时间:2014-07-16 18:44:51

标签: ios objective-c opengl-es

我想在绿色背景上绘制一个完全透明的矩形。透明矩形在它自己的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 )

我希望居中的矩形不可见,但它却是浅绿色,如下所示: How my view looks
如果我将背景颜色更改为红色,则内部矩形变为浅红色。所以alpha混合工作正常,它只是不够工作。

有关如何调试此内容的任何建议吗?

0 个答案:

没有答案