Cocos2D-x for XNA類解析(2): CCDirector(上)


    Windows phone上最好的游戲引擎cocos2d-x for XNA發布也有幾個月了,作為移植團隊我們一直沒有時間獻上一些教程,現在我們要開始了,打開你的Visual Studio,我們開始學習吧!
   這系列教程我會講解分析大部分開發者會用到的cocos2d-x for XNA的常用類的功能及用法,帶些示例代碼,並且,考慮到大部分做Windows phone開發的人都熟悉Silverlight,我會將cocos2d-x for XNA和Silverlight做一些對比,便於你更好更快的掌握cocos2d,做出很好的游戲。     
 
 
 
     在了解了CCApplication之后,接下來我們就應該學習CCDirector了,因為在應用程序入口類CCApplication的的Draw方法里,直接進入了CCDirector的mainLoop方法。
     由cocos2d的基礎概念里面我們應該看到,CCDirector處於最頂端:
 
      PS:cocos2d中的類基本上都有比較詳細的注釋,而類的注釋非常重要,它基本上介紹了該類的主要功能。我們看下CCDirector的注釋:
     Class that creates and handle the main Window and manages how and when to execute the Scenes.
     The CCDirector is also responsible for:
       - initializing the OpenGL context
       - setting the OpenGL pixel format (default on is RGB565)
       - setting the OpenGL buffer depth (default one is 0-bit)
       - setting the projection (default one is 3D)
       - setting the orientation (default one is Protrait)
 
     Since the CCDirector is a singleton, the standard way to use it is by calling:
     _ CCDirector::sharedDirector()->methodName();
     The CCDirector also sets the default OpenGL context:
        - GL_TEXTURE_2D is enabled
        - GL_VERTEX_ARRAY is enabled
        - GL_COLOR_ARRAY is enabled
        - GL_TEXTURE_COORD_ARRAY is enabled
 
     從這里我們不難看出:
     CCDirector主要負責當前窗口的內容,並且負責場景的切換和管理,它同時還還負責:
        1. OpenGL中上下文的初始化(當然這在XNA中很多東西沒有了)
        2. 設置投影方式,默認為3D透視投影
        3. 設置屏幕方向
        4. 它是一個單實例
        5. 設置着色器一些通用參數
 
       PS:
        1. 對於投影方式,cocos2d同時支持2D投影和3D投影,默認為3D投影,2D的情況下采用的是正投影。但是cocos2d大部分的功能需要3D的方式才能實現,所以你不應該隨便切換為2D,除非你確保2D的方式能實現接下來要使用的功能。cocos2d中的2D投影主要是用來處理和2D相關的繪制,並且出於性能考慮,在某些特殊的情況下用2D來繪制,以后會講到。
       2. 對於XNA中basicEffect的一些通用默認參數的設置,比如TextureEnabled可以放在CCDirector來做,目前全部放到Draw方法中設置,這個以后放在優化之列。  
 
     但是除此之外,CCDirector還有許多輔助的功能,這些是注釋當中沒有的,而開發中會遇到的,這里我在列舉一下:
      1. 顯示和設置FPS
      2. 修改窗口大小,繪制縮放比例
      3. OpenGL坐標和屏幕位置之間的轉化,也就是基於左上角為原點坐標系中的點,和左下角為原點的坐標系中的點的坐標轉換,這個比如在XNA中接受的Touch事件中的點是左上角為原點的坐標系,在處理的時候需要轉換為左下角為原點的坐標系
      4. 獲取和設置窗口尺寸
      5. 一共運行了多少幀
      6. 設置AlphaBlending,深度測試等
 
     當然,CCDirector最重要的功能是場景管理,我們將在下一貼重點分析。

    歡迎加入QQ群:190784175(cocos2d-x for XNA開源社區), 由cocos2d-x for XNA開發團隊創建


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM