Cocos 2dx iOS 平台初始化,OpenGL 初始化,分辨率设置
1. Main.m
int retVal = UIApplicationMain(argc, argv, nil, @"AppController");
- AppController.mm
//A. AppDelegate 构造函数,创建实例
AppDelegate s_sharedApplication;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//A. 创建window window bounds:768 X 1024
window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
//B. 创建 eaglView, bounds size 768 X 1024
CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds]
pixelFormat: (NSString*)cocos2d::GLViewImpl::_pixelFormat
depthFormat: cocos2d::GLViewImpl::_depthFormat
preserveBackbuffer: NO
sharegroup: nil
multiSampling: NO
numberOfSamples: 0 ];
//B1. eaglView 的frame size 和 显示宽高是:1536 X 2048
float width = [eaglView getWidth];
float height = [eaglView getHeight];
//C. 创建 viewController,并设置viewController的view指向eaglView
_viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
_viewController.view = eaglView;
//D. 将viewController关联window
[window setRootViewController:_viewController];
//E. 创建 cocos2d glview,并关联eaglView
cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView);
cocos2d::Director::getInstance()->setOpenGLView(glview);
//F. 运行cocos2dx app 实例
cocos2d::Application *app = cocos2d::Application::getInstance();
app->run();
}
- AppDelegate.cpp
bool AppDelegate::applicationDidFinishLaunching(){
//A. 获取director 实例,获取 glView
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
//B. 设置director 刷新频率 30fps 或者60fps
director->setAnimationInterval(1.0 / 60);
//C. 设置glView 设计分辨率,这里设置720 X 960. (这里会放大到 UIWindow size 768 X 1024)
// SHOW_ALL: 等比例缩放, 会出现黑边
// EXACT_FIT: 缩放至全屏,会出现变形,大部分ipad的分辨率比例是4:3,设计原图分辨率720X960,也是3:4,大部分ipd不会变形
glview->setDesignResolutionSize(720, 960, ResolutionPolicy::EXACT_FIT);
}