2012-07-05 66 views
1

通常推出coco2d OpenGL的視圖中,coco2d OpenGL的畫面從AppDelegate中推出。從視圖 - 控制

方法一:從的appdelegate luanching

- (void) applicationDidFinishLaunching:(UIApplication*)application 
{ 

    // Init the window 
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

// Try to use CADisplayLink director 
// if it fails (SDK < 3.1) use the default director 
if(! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink]) 
    [CCDirector setDirectorType:kCCDirectorTypeDefault]; 


CCDirector *director = [CCDirector sharedDirector]; 

// Init the View Controller 
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; 
viewController.wantsFullScreenLayout = YES; 

// 
// Create the EAGLView manually 
// 1. Create a RGB565 format. Alternative: RGBA8 
// 2. depth format of 0 bit. Use 16 or 24 bit for 3d effects, like CCPageTurnTransition 
// 
// 
EAGLView *glView = [EAGLView viewWithFrame:[window bounds] 
           pixelFormat:kEAGLColorFormatRGB565 // kEAGLColorFormatRGBA8 
           depthFormat:0      // GL_DEPTH_COMPONENT16_OES 
        ]; 

// attach the openglView to the director 
[director setOpenGLView:glView]; 

,但我需要能夠從視圖 - 控制 推出OpenGL視圖,所以,我的視圖控制器的viewDidLoad函數我這樣做

方法2.內部:推出從視圖 - 控制 - (void)viewDidLoad {

[super viewDidLoad]; 

self.view.frame = CGRectMake(0, 0, 320, 480); 

// Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits 
CCGLView *glView = [CCGLView viewWithFrame:CGRectMake(0,0,320,480) 
           pixelFormat:kEAGLColorFormatRGB565 //kEAGLColorFormatRGBA8 
           depthFormat:0 //GL_DEPTH_COMPONENT24_OES 
         preserveBackbuffer:NO 
           sharegroup:nil 
          multiSampling:NO 
          numberOfSamples:0]; 

director_ = (CCDirectorIOS*) [CCDirector sharedDirector]; 


director_.wantsFullScreenLayout = YES; 

// Display FSP and SPF 
[director_ setDisplayStats:YES]; 

// set FPS at 60 
[director_ setAnimationInterval:1.0/60]; 

// attach the openglView to the director 
[director_ setView:glView]; 

// for rotation and other messages 
[director_ setDelegate:self]; 

// 2D projection 
[director_ setProjection:kCCDirectorProjection2D]; 
// Run the intro Scene 



[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 

// and add the scene to the stack. The director will run it when it automatically when the view is displayed. 
[director_ pushScene: [helloworld scene]]; 

metho d2不工作我沒有看到任何場景,什麼也沒有顯示出來。所以問題是如何讓OpenGL View從一個viewcontroller呈現出來?

回答

1

您是否嘗試過在類參考attachInView:方法?

形式

[director_ attachInView:self.view]; 

其他的It'be您可以通過

[self.view addSubview:director_.view]; 

希望這可以幫助你做到這一點。

0

因爲CCDirectorIOS繼承CCDirector類繼而繼承UIViewController類,以及我假設你正在使用的UINavigationController,因此只需按動director_類末viewDidLoad中

[self.navigationController pushViewController:director_動畫:YES] ;

相關問題