1. 程式人生 > >cocos2d-x渲染框架

cocos2d-x渲染框架

渲染框架 包括 CCDirector CCScene CCLayer CCSprinte 四類

CCDirector 核心類 導演與場景有關的函式 

// Scene Management

    /** Enters the Director's main loop with the given Scene.
     * Call it to run only your FIRST scene.
     * Don't call it if there is already a running scene.
     *
     * It will call pushScene: and then it will call startAnimation
     */
    void runWithScene(Scene *scene);

    /** Suspends the execution of the running scene, pushing it on the stack of suspended scenes.
     * The new scene will be executed.
     * Try to avoid big stacks of pushed scenes to reduce memory allocation.
     * ONLY call it if there is a running scene.
     */
    void pushScene(Scene *scene);

    /** Pops out a scene from the stack.
     * This scene will replace the running one.
     * The running scene will be deleted. If there are no more scenes in the stack the execution is terminated.
     * ONLY call it if there is a running scene.
     */
    void popScene();

    /** Pops out all scenes from the stack until the root scene in the queue.
     * This scene will replace the running one.
     * Internally it will call `popToSceneStackLevel(1)`
     */
    void popToRootScene();

    /** Pops out all scenes from the stack until it reaches `level`.
     If level is 0, it will end the director.
     If level is 1, it will pop all scenes until it reaches to root scene.
     If level is <= than the current stack level, it won't do anything.
     */
     void popToSceneStackLevel(int level);

    /** Replaces the running scene with a new one. The running scene is terminated.
     * ONLY call it if there is a running scene.
     */
    void replaceScene(Scene *scene);

    /** Ends the execution, releases the running scene.
     It doesn't remove the OpenGL view from its parent. You have to do it manually.
     * @lua endToLua
     */
    void end();

    /** Pauses the running scene.
     The running scene will be _drawed_ but all scheduled timers will be paused
     While paused, the draw rate will be 4 FPS to reduce CPU consumption
     */
    void pause();

    /** Resumes the paused scene
     The scheduled timers will be activated again.
     The "delta time" will be 0 (as if the game wasn't paused)
     */
    void resume();

    /** Stops the animation. Nothing will be drawn. The main loop won't be triggered anymore.
     If you don't want to pause your animation call [pause] instead.
     */
    virtual void stopAnimation() = 0;

    /** The main loop is triggered again.
     Call this function only if [stopAnimation] was called earlier
     @warning Don't call this function to start the main loop. To run the main loop call runWithScene
     */
    virtual void startAnimation() = 0;

    /** Draw the scene.
    This method is called every frame. Don't call it manually.
    */
    void drawScene();


相關推薦

cocos2d-x渲染框架

渲染框架 包括 CCDirector CCScene CCLayer CCSprinte 四類 CCDirector 核心類 導演與場景有關的函式  // Scene Management     /** Enters the Director's main loop w

Cocos2d-x 渲染器Renderer與6種RenderCommand詳解

Cocos2d-x 渲染器Renderer 宣告:本文使用的是cocos2d-x-3.17的程式碼 在《Cocos場景遍歷與渲染》中已講解了Cocos2d 在渲染時會先遍歷場景,遍歷時會生成渲染命令,渲染器再處理渲染命令繪製出圖形。這篇文章主要是講解渲染器如何處理

寶爺Debug小記——Cocos2d-x(3.13之前的版本)底層BUG導致Spine渲染花屏

lec point ror 排除 再看 加載 莫名奇妙 city .cn 最近在工作中碰到不少棘手的BUG,其中的一個是Spine骨骼的渲染花屏,在戰鬥中派發出大量士兵之後有概率出現花屏閃爍(如下圖所示),這種莫名奇妙且難以重現的BUG最為蛋疼。 前段時間為了提

quick-cocos2d-x教程7:程序框架內framework文件夾分析

cocos2dx 網絡相關 ini 分析 bug audio 細致 bsp cocos2d-x framework是整個框架執行時的實現代碼。所以一定要細致看這個文件夾的文件。我們先從framework文件夾中的init.lua分析起走。 init.lua文件裏,框架

quick-cocos2d-x教程3:程序框架內文件夾分析之docs文件夾

我們 項目執行 2.3 cocos dsc pro title explorer deb 如今我們分析框架中的docs文件夾。看看這個文檔文件夾中,究竟放了那些對我們實用的東西。 docs文件夾分析 UPGRADE_TO_2_2_3.md 就是講升級的變化。

cocos2d-x多線程渲染的一些探討

pen schedule 反饋 cpu man 並行性 xtu 高效 個數 可行性: 遊戲循環主要包括這幾個部分:1,硬件事件,主要就是指觸屏事件,按鍵事件和鼠標事件;2,遊戲事件,主要指定時器事件和預定義事件,比如schedule;3,遊戲邏輯,對於胖腳本端來說,這個就指

Cocos2d-x專案建立之 原生ios專案匯入Cocos2d框架

上一章: Cocos2d-x專案建立之 靜態庫生成 第一步,“Cocos2d-X原始碼”和“預編譯靜態庫”準備 Cocos2d-X原始碼可在官網下載,如: Cocos2d-X 預編譯靜態庫生成方法: Cocos2d-x專案建立之 靜態庫生成

【 專欄 】- Cocos2d-x 3.x 圖形學渲染

Cocos2d-x 3.x 圖形學渲染 該專欄主要是介紹Cocos2d-x 3.x圖形學渲染技術講解,針對的是3D模型的材質渲染,幫助喜歡3D的開發者快速掌握該技術。。。。。

卡通渲染Cocos2d-x中的實現(描邊與對物體表面顏色的色階化)

卡通渲染Cocos2d-x中的實現 在一些型別的遊戲中,使用卡通渲染能夠將原有模型的一些細節剝離,使原本比較寫實的模型變得卡通化。在這裡,我向大家介紹簡單介紹一下如何在Cocos2d-x中實現卡通渲染。 事實上,卡通渲染具體來說,可以分為兩個部分:描邊與對物體表面顏色的

cocos2d-x渲染樹和CCNode類

在之前的文章中提到,cocos2d-x的主迴圈會在每幀重新整理頁面,而這個繪製就是以遞迴的方式對這個渲染樹進行渲染。// Draw the Scene void CCDirector::drawScene(void) { ... //繪製渲染場景

【複習筆記】 cocos2d-x 2.x 渲染特效實現 八 流光效果

簡單來說,流光效果就是在貼圖上利用glowmap在原貼圖上的移動做動態的發亮效果,來讓貼圖看起來有光亮在移動。為了讓貼圖上的亮斑的排布看起來更加貼近自然,我們利用柏林噪聲來生成glowmap。事實上,二維或者三維的柏林噪聲在圖形學上有很多的應用,它可以用來描述很多自然的數學

【COCOS2DX-LUA 指令碼開發之六】利用Lua強轉函式解決使用CCNode報錯或無法正常使用以及簡單介紹 quick-cocos2d-x 與 OpenQuick 兩款Lua免費開源框架

Him 的Cocos2dx-Lua群中有童鞋出現一個問題,問題是當他在Lua專案中利用Lua建立一個區域性變數CCSprite或者CCLayer等CCNode,然後在其他的函式中通過其索引取出之前建立過的CCSprite或CCLayer等,取出後進行設定設定透明、座標、縮放、

【複習筆記】 cocos2d-x 2.x 渲染特效實現 七 輝光效果

輝光效果經常用來做一些物體的自發光,這種發光效果不需要光照計算,只是在貼圖上進行發光的模擬效果,所以有著很好的效率。輝光效果意味著貼圖會變亮。為了對發光的部分做計算,需要一張glowmap貼圖,當我們使用src和dst都為GL_ONE的方式,混合glowmap和原圖時,原圖

【複習筆記】 cocos2d-x 2.x 渲染特效實現 四 高斯模糊效果二

在上文末,我們已經完成了高斯模糊橫向上的模糊效果,而且提到,縱向模糊要在橫向模糊的結果上進行,所以為了得到橫向模糊的貼圖,我們使用離屏渲染。顧名思義,現在渲染的目的地不是螢幕了~一般狀況下,gl是直接把渲染好的紋理繪製到螢幕緩衝區的,進而直接顯示在螢幕上。但是現在,我們要把

Cocos2d-x 3.0 新的渲染架構

8月1號這一天,cocos2d-x 官方微博上說 x 團隊正在糾結是否用智慧指標替換現有的引用計數記憶體管理機制,結果引發大家的爭論。 在我看來,引發這個爭論的原因是 cocos2d-x 打算實現多執行緒化,從而充分利用現代智慧手機的多核處理器資源。而多執行緒化的一個最重大需求,應該就是 cocos2

cocos2d-x 優化(紋理渲染優化、資源快取、記憶體優化)

概述 包括以下5種優化:引擎底層優化、紋理優化、渲染優化、資源快取、記憶體優化 引擎優化 2.0版本比1.0版本在演算法上有所優化,效率更高。2.0版本使用OpenGl ES 2.0圖形庫,1.0版本使用OpenGL ES 1.0。 紋理優化 紋理是最消耗記憶

【複習筆記】 cocos2d-x 2.x 渲染特效實現 五 節點樹的模糊效果

到目前為止,我們實現的模糊都是在單張貼圖上的,只是針對當前這一張貼圖對其模糊,因而當圖片中的內容就在圖片邊緣的時候,其模糊在圖片邊緣是被“截斷”的,因此,我們需要一個比原貼圖大,但又包含原本顏色資訊的圖來做模糊。另外,有時候我們需要的模糊並不只是在一張貼圖上,可能當某個單位

cocos2d-x原始碼剖析之整體框架

     剛閱讀完了cocos2d-x的大部分原始碼,感覺受益匪淺,cocos2d-x的程式碼並不複雜,可讀性很強,並且其中一部分精華的部分也可以運用到工作中去,相得益彰。現在看來,閱讀原始碼的最好方式是top-down的方式,先弄懂整個框架,再重點突破重要和感興趣的模組

cocos2d-x 3.0+版本的渲染機制

在主執行緒中渲染,只是做了一個渲染佇列 由於OpenGL狀態機不允許多個執行緒同時訪問,所以主執行緒和渲染執行緒分開後,整個引擎就變得不易用了,不按照規則來呼叫就非常容易崩潰,所以不同執行緒的事情就停留在demo階段沒有繼續往前推進。易用性還是非常重要的一點。

Cocos2d-x 影象渲染和動畫——序列幀動畫

建立方法 手動新增序列幀到Animation類 在建立Animation例項時會用到以下幾個介面: addSpriteFrame,新增精靈幀到Animation例項 setDelayUnits,設定每一幀持續時間,以秒為單位 setRestoreOr