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);
}