cocos2d-x 3.3的ScrollView在android模拟器中的白底蓝底问题

cocos2d-x 3.3版本在Android模拟器上遇到白底蓝底显示异常,通常可通过调整glSurfaceView.setEGLConfigChooser的参数解决。此问题在真机和模拟器上都可能发生。解决方法包括删除特定代码行以避免不兼容的OpenGL ES版本导致的问题,特别是针对不支持OpenGL ES的Android x86虚拟机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先可以参考:http://www.cocoachina.com/bbs/read.php?tid=195955

无论是真机还是模拟器,只要出现白底蓝底问题,基本上都可以通过修改glSurfaceView.setEGLConfigChooser的参数进行修正。

在默认情况下,cocos2dx会将C++中的AppDelegate::initGLContextAttrs()中设置的glContextAttrs传给java中的glSurfaceView.setEGLConfigChooser。

C++:

void AppDelegate::initGLContextAttrs()
{
    //set OpenGL context attributions,now can only set six attributions:
    //red,green,blue,alpha,depth,stencil
    GLContextAttrs <span style="color:#ff0000;">glContextAttrs = {8, 8, 8, 8, 24, 8}</span>;


    GLView::setGLContextAttrs(glContextAttrs);
}

Cocos2dxActivity.java:

<span style="font-family:helvetica neue;color: rgb(51, 51, 51);">    public Cocos2dxGLSurfaceView onCreateView() {
        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
        //this line is need on some device if we specify an alpha bits
        if(this.mGLContextAttrs[3] > 0) glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);</span><span style="color:#333333;">
</span><span style="color: rgb(51, 51, 51); font-family: 'helvetica neue';">...</span><span style="font-family: 'helvetica neue';"><span style="color:#333333;">
        cocos2dEGLConfigChooser chooser = new cocos2dEGLConfigChooser(</span><strong><span style="color:#ff0000;">this.mGLContextAttrs</span></strong><span style="color:#333333;">);
        glSurfaceView.setEGLConfigChooser(chooser);

        return glSurfaceView;
}</span></span>
如果是模拟器,cocos2dx还作了特别处理:

Cocos2dxActivity.java:

    public void init() {        
        ...

        // Switch to supported OpenGL (ARGB888) mode on emulator
        if (isAndroidEmulator())
           <span style="color:#ff0000;">this.mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);</span>
        ...
    }
最后一个参数是0,禁止了模板缓冲,导致了渲染错误。

本人用的是android自带的模拟器,而不是android x86虚拟机,前者可以使用Host GPU,后者,本人安装的是4.0rc,不支持OpenGL ES(据说4.4之后才支持),根本无法运行cocos2dx程序。

解决办法就是将下列语句删除:

        if (isAndroidEmulator())
           <span style="color:#ff0000;">this.mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值