开发游戏编辑器时用到,一个比较简单的实现,参考了将ogre嵌入到qt的方法。
主要做法是通过重写CCEGLView源码,稍微改变了其中的两个函数,改写后的函数能够传递句柄,让cocos2d引擎渲染到我们自己创建的窗口中。
首先建立一个qt项目,添加cocos2d的相关配置,这里就不多说了,项目资源视图是这样子的。
要注意的是,因为建立的qt工程,cocos2d没有默认编译平台,这里改了下 CCPlatformConfig.h 的源码,因为我的是windows环境,这里改成了CC_PLATFORM_WIN32:
// define supported target platform macro which CC uses.
#define CC_PLATFORM_UNKNOWN 0
#define CC_PLATFORM_IOS 1
#define CC_PLATFORM_ANDROID 2
#define CC_PLATFORM_WIN32 3
#define CC_PLATFORM_MARMALADE 4
#define CC_PLATFORM_LINUX 5
#define CC_PLATFORM_BADA 6
#define CC_PLATFORM_BLACKBERRY 7
#define CC_PLATFORM_MAC 8
#define CC_PLATFORM_NACL 9
// Determine target platform by compile environment macro.
#define CC_TARGET_PLATFORM CC_PLATFORM_WIN32
不然编译时会报错说平台没有定义。
接下来,写一个我们自己的widget,继承自qt中的QWidget,用来渲染cocos2d窗口,这里直接附上代码。
Cocos2dWidget.h
#ifndef COCOS2DWIDGET_H
#define COCOS2DWIDGET_H
#include <QWidget>
#include <coc