美文网首页
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

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