美文网首页
cocos2dx+qt

cocos2dx+qt

作者: 许彦峰 | 来源:发表于2022-06-21 10:52 被阅读0次

platform问题

cocos2d-x\cocos\platform/CCPlatformConfig.h(143): fatal error C1189: #error: "Cannot recognize the target platform; are you targeting an unsupported platform?"
解决办法,我是自己定义了平台,在程序开头main.cpp

#ifndef _WINDOWS
#define _WINDOWS
#endif // !_WINDOWS

这样cocos暂时会识别为Win32平台,能解决问题,不算完美

将游戏窗口嵌入qt

  • QWidget::createWindowContainer
    创建一个QWidget窗口容器,该窗口容器使得基于QWidget的应用内嵌window窗口
    这种办法比较绕,而且不是太灵活,暂时就没有使用。

接入到qt,需要使用QOpenGLWidget

网上的代码没有重点说明这个点,好多都是使用widget,导致自己排查了好久,始终没有搞明白是如何将OpenGL接入到qt的,其实qt已经提供了OpenGL的环境。

nvoglv属于是渲染崩溃

造成这个问题,一般是由于提交的顶点数据有问题,drawCall异常导致的



以下代码注意先后顺序,否则setOpenGL的时候会导致计算异常,也会引起渲染崩溃

this->setDesignResolutionSize(width, height, ResolutionPolicy::SHOW_ALL);

auto director = Director::getInstance();
director->setOpenGLView(this);

cocos2dx 接入到QT后,报错:

必现代码:

director->mainLoop();
auto view = director->getOpenGLView();
if (view)
{
    view->pollEvents(); // 这个导致的,里面调用了glfwPollEvents
}

glfwPollEvents 和QOpenGLWidget都是管理窗口和OpenGL上下文的一个framework,在窗口管理这部分只能选择其中一个,否则会起冲突。

在mainloop里面也会这个调用:



只要不调用这个glfw的函数即可,解决办法,重写pollEvents();

void pollEvents() override {}

相关文章

  • cocos2dx+qt

    platform问题 cocos2d-x\cocos\platform/CCPlatformConfig.h(14...

网友评论

      本文标题:cocos2dx+qt

      本文链接:https://www.haomeiwen.com/subject/sbskvrtx.html