@yinjimmyCocosBCX开发团队
大哥,出来帮我们看看呗。项目被卡住了,推进不动。好着急
@yinjimmyCocosBCX开发团队
大哥,出来帮我们看看呗。项目被卡住了,推进不动。好着急
加你qq了,进群489182678
sdkbox 的 js 绑定 在 2.2 上有bug
请问下载怎么解决?有没有头绪!!
谢谢Jimmy帮忙解决!分3步:
1。CCEAGLView-ios.h 文件
-(void) setupGLContext2; // 添加
2。CCEAGLView-ios.mm 文件
-(void) setupGLContext2
{
if (!_context || ![EAGLContext setCurrentContext: _context] )
{
NSLog(@“Can not crate GL context.”);
return;
}
}
3。AppController.mm 文件
(void)applicationDidBecomeActive:(UIApplication *)application {
[[SDKWrapper getInstance] applicationDidBecomeActive:application];
auto glview = (__bridge CCEAGLView *)cocos2d::Application::getInstance()->getView();
[glview setupGLContext2];
}
这样切回前台刚要黑屏马上又渲染了。不过如果广告切换的话,有问题的广告可能还是会出现这个情况,但还是解决了前后台切换的大问题。
奇怪的是Jimmy那边一直复现不了,摸瞎帮忙解决的。。找时间我也更换环境看看。
继续测试,也希望框架能够进一步完善!
iOS 12.3.1 看完admob或者中途关掉试玩广告,回到游戏界面时画面停止渲染,停留在进入广告前的画面。但是脚本还在跑,能看到日志输出。
ccc 调整 CCApplication-ios.mm
-(void) doCaller: (id) sender
{
static std::chrono::steady_clock::time_point prevTime;
static std::chrono::steady_clock::time_point now;
static float dt = 0.f;
prevTime = std::chrono::steady_clock::now();
// setup OpenGL ES Context start 开始
CCEAGLView *glview = (CCEAGLView*)_application->getView();
[glview setupGLContext2];
// setup OpenGL ES Context end 结束
bool downsampleEnabled = _application->isDownsampleEnabled();
if (downsampleEnabled)
_application->getRenderTexture()->prepare();
_scheduler->update(dt);
cocos2d::EventDispatcher::dispatchTickEvent(dt);
if (downsampleEnabled)
_application->getRenderTexture()->draw();
[(CCEAGLView*)(_application->getView()) swapBuffers];
cocos2d::PoolManager::getInstance()->getCurrentPool()->clear();
now = std::chrono::steady_clock::now();
dt = std::chrono::duration_cast<std::chrono::microseconds>(now - prevTime).count() / 1000000.f;
}
@86396 可以试一下这个吗?
是 主循环还在,但是 OpenGL 的环境坏掉了。
这个是改成每个主循环都调用一次[EAGLContext setCurrentContext: _context]吗,有无性能影响?
cocos2d-x 3.17.2
-(void) doCaller: (id) sender
{
if (isAppActive) {
cocos2d::Director* director = cocos2d::Director::getInstance();
EAGLContext* cocos2dxContext = [(CCEAGLView*)director->getOpenGLView()->getEAGLView() context];
if (cocos2dxContext != [EAGLContext currentContext])
glFlush();
[EAGLContext setCurrentContext: cocos2dxContext];
CFTimeInterval dt = ((CADisplayLink*)displayLink).timestamp - lastDisplayTime;
lastDisplayTime = ((CADisplayLink*)displayLink).timestamp;
director->mainLoop(dt);
}
}
抱歉刚看到!这个可以!直接替换之前说的第3步,测了很多次没有发现卡死或黑屏,也不会有切回瞬间的短暂黑屏了。
感谢测试。
这个问题有在git上修复吗
我也饿是2.0.9,怎么解决啊
我们2.0.9怎么修复这个BUG啊
大大~~ 你发的这个和3.17.2里面的一样~~~
求帮助~~