将cocos2dx接入QT遇到的问题

简介: 将cocos2dx接入QT遇到的问题

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
#ifndef _WIN32
#define _WIN32
#endif // !_WIN32
复制代码

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

将游戏窗口嵌入qt

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

将其他进程的窗口嵌入到qt

接入到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 {}



目录
相关文章
|
存储 缓存 开发工具
AppsFlyer 研究(五)延迟深度链接&客户端获取归因数据
AppsFlyer 研究(五)延迟深度链接&客户端获取归因数据
1694 0
|
4月前
|
传感器 运维 算法
C语言实现酒店KTV声控DMX512灯光系统的节目选择
C语言实现酒店KTV声控DMX512灯光系统的节目选择
|
11月前
|
人工智能 运维 安全
热门 MCP Server一键部署
本文探讨了MCP(Model Context Protocol)的发展及其云上托管的趋势。尽管MCP协议在2024年发布时未引起广泛关注,但随着Cursor和Manus等平台的集成,以及OpenAI对其Agent SDK的支持,MCP逐渐成为行业标准。然而,本地部署的MCP Server存在效率低、扩展复杂等问题,难以满足企业级需求。函数计算(FC)作为Serverless算力的代表,提供一键托管开源MCP Server的能力,具备成本效益、弹性扩展、简化运维等优势,解决了传统托管的核心痛点。文章还提供了多个开源MCP Server的一键部署链接,助力开发者快速上手。
热门 MCP Server一键部署
|
10月前
|
机器学习/深度学习 算法 数据可视化
数据驱动是什么?数据驱动的深层次理解!
在企业数字化转型中,“数据驱动”常被提及,但其内涵却未必人人明晰。本文从应用层次与价值实现机制两方面解读“数据驱动”,分为四个层次:监测(记录事实)、分析(诊断问题)、挖掘(深度算法)和使能(赋能业务)。同时提出DIPOA模型,将数据视为生产原材料,通过链条完成价值转化。
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
707 0
QT多插件通信框架CTK编译记录
|
Android开发 开发者 UED
深入理解安卓应用开发中的生命周期管理
本文旨在探讨安卓应用开发中生命周期管理的重要性,以及如何有效利用生命周期解决常见问题。通过分析安卓应用生命周期的不同阶段及其特点,提供实用的代码示例和调试技巧,帮助开发者优化应用性能,提升用户体验。
399 8
|
边缘计算 持续交付 数据中心
Docker在边缘计算中的崭露头角:探索容器技术如何驱动边缘计算的新浪潮
边缘计算是一项快速发展的技术,它旨在将计算能力更接近数据源和终端用户,以提供低延迟、高性能的计算体验。在这个充满活力的领域,Docker容器技术崭露头角,成为推动边缘计算革新的一股新力量。本文将深入探讨Docker在边缘计算中的应用,介绍其优势和挑战,并穿插一些示例代码,以帮助读者更好地理解这一新兴趋势。 第一部分:边缘计算和Docker容器 边缘计算的定义 边缘计算是一种计算范式,它将计算资源和数据处理能力推向网络边缘,靠近数据源和终端用户。这与传统的集中式云计算模型形成鲜明对比,后者将大部分计算任务集中在中央数据中心。边缘计算的关键目标是减少数据传输的延迟,提高响应速度,以满足对实时性要
832 0
|
缓存 NoSQL 程序员
高并发下的生存之道:如何巧妙化解热Key危机?
本文详细探讨了互联网高并发场景下的热Key问题及其解决方案。热Key即因频繁访问导致缓存压力激增,影响系统稳定性。作者小米介绍了多种应对策略,包括Redis集群、主从复制、本地缓存、限流及Key加随机值等技术手段,旨在帮助读者有效分散负载,确保服务稳定。此外,还提供了兜底逻辑如降级处理和预热机制,以应对突发流量。希望本文能帮助大家更好地理解和解决热Key问题。
397 1
高并发下的生存之道:如何巧妙化解热Key危机?
|
负载均衡 算法 应用服务中间件
解密Nginx负载均衡:实现流量分发与故障转移
解密Nginx负载均衡:实现流量分发与故障转移
991 1
|
安全 Ubuntu 物联网
我就是我,原理不一样的snap
我就是我,原理不一样的snap