cocos2d-x 默认背景为黑色,能否改为透明的

在 android 里应用,具体流程是这样的 首先创建一个 Activity,然后创建一个GLSurfaceView,那么这个GLSurfaceView的区域,在初始化的时候,会交给cocos2d-x底层库来绘。 实际上cocos2d-x是利用 GLSurfaceView来实现与android交互的,不知道这样原理对不 ,但现在有个问题,GLSurfaceView 在android,我可以设置背景透明,放在布局中,设置Z-order级别,放在一个组件的上方,可以实现不会遮住下面的部分。。。但cocos2d-x渲染后,总是把背景整成黑色,这样就遮住了下面的元素。。有没有理法让其初始化时为透明 。。这样就不会了

谢谢

如何解决?

谢谢,已经解决

可以使用 glclearColor 函数修改刷新背景色。 但是能不能成你想要的效果就不清楚了

如何解决?

可以使用 glclearColor 函数修改刷新背景色。 但是能不能成你想要的效果就不清楚了

怎么解决的,求指导,谢谢

我QQ 604757644

怎么解决的,分享一下,谢谢!

类似这种自己问题解决了,然后回个“谢谢”,让楼下的人看着干着急,貌似是中国程序员的风格。

怎么解决的,分享一下,谢谢!

类似这种自己问题解决了,然后回个“谢谢”,让楼下的人看着干着急,貌似是中国程序员的风格。

http://blog.csdn.net/xexiyong/article/details/9257089?reload

设置背景颜色为白色:  

class HelloWorld : public cocos2d::CCLayer

更改为
class HelloWorld : public cocos2d::CCLayerColor

将bool HelloWorld::init()中的

CC_BREAK_IF(! CCLayer::init());

更改为
CC_BREAK_IF(! CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)));

若需要其他颜色请参照RGB数据往ccc4中填就好了,它的第四个参数不要改,一直是255,不影响整体颜色。

不能说这是中国特色程序员,其实google到英文论坛也经常碰到这种,问一个问题,然后大家讨论,题主冒一句solved就消失了。

:7:十分感谢啊

不对 啊 看了看 这是透明吗

我用的3.1版本, 10楼的那个不行呢, initWithColor已经过期了
我也是使用glClearColor来修改背景色. 至于透明, 暂时没尝试过. 不过应该是将alpha通道改为全黑(0)就可以了吧(glClearColor(1.0, 1.0, 1.0, 0))
需要的可以试试

android层:
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
// hello should create stencil buffer
// glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);//modify

    glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
    glSurfaceView.setZOrderOnTop(true);
    glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
    
    return glSurfaceView;
}

C++层:
void CCDirector::setGLDefaultValues(void)
{
// This method SHOULD be called only after openGLView_ was initialized
CCAssert(m_pobOpenGLView, “opengl view should not be null”);

setAlphaBlending(true);
// XXX: Fix me, should enable/disable depth test according the depth format as cocos2d-iphone did
// ;
setDepthTest(false);
setProjection(m_eProjection);

// set other opengl default values
//glClearColor(0.0f, 0.0f, 0.0f, 1.0f);//modify
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

}
即可实现透明效果

1赞

补充IOS 上可以参考这个方法变成透明背景:
http://blog.sina.com.cn/s/blog_6957e2e50101bxf1.html

要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。
然后view设置为透明
glView.opaque = NO;
;
];
;

在3.3 版本下,我是在项目内搜索glClearColor,把CCDirector.cpp里的默认背景色设置,改为透明。不同版本处理略有差异

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);