<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        cocos2d-x3.2DrawNode繪圖API

        來源:懂視網 責編:小采 時間:2020-11-09 08:01:38
        文檔

        cocos2d-x3.2DrawNode繪圖API

        cocos2d-x3.2DrawNode繪圖API:關于Cocos2d-x 3.x 版本的繪圖方法有兩種: 1、使用DrawNode類繪制自定義圖形。 2、繼承Layer類重寫draw()方法。 以上兩種方法都可以繪制自定義圖形,根據自己的需要選擇合適的方法,這里我們只討論第一種方法,第二種方法涉及到opengl的知識,暫不討論
        推薦度:
        導讀cocos2d-x3.2DrawNode繪圖API:關于Cocos2d-x 3.x 版本的繪圖方法有兩種: 1、使用DrawNode類繪制自定義圖形。 2、繼承Layer類重寫draw()方法。 以上兩種方法都可以繪制自定義圖形,根據自己的需要選擇合適的方法,這里我們只討論第一種方法,第二種方法涉及到opengl的知識,暫不討論

        關于Cocos2d-x 3.x 版本的繪圖方法有兩種: 1、使用DrawNode類繪制自定義圖形。 2、繼承Layer類重寫draw()方法。 以上兩種方法都可以繪制自定義圖形,根據自己的需要選擇合適的方法,這里我們只討論第一種方法,第二種方法涉及到opengl的知識,暫不討論。 我

        關于Cocos2d-x 3.x 版本的繪圖方法有兩種:

        1、使用DrawNode類繪制自定義圖形。

        2、繼承Layer類重寫draw()方法。


        以上兩種方法都可以繪制自定義圖形,根據自己的需要選擇合適的方法,這里我們只討論第一種方法,第二種方法涉及到opengl的知識,暫不討論。


        我們先來簡單的看看DrawNode提供的API接口:

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        26

        27

        28

        29

        30

        31

        32

        33

        34

        35

        36

        37

        38

        39

        40

        41

        42

        43

        44

        45

        46

        47

        48

        49

        50

        51

        52

        53

        55

        56

        57

        58

        59

        60

        61

        62

        63

        65

        66

        67

        68

        class CC_DLL DrawNode : public Node

        {

        public:

        //初始化一個DrawNode對象,然后被addChild添加進去就ok了

        static DrawNode* create();

        //畫實心圓,參數分別是圓心位置、圓半徑、圓填充顏色,如果要畫空心圓,就把圓當多邊形畫(這個多邊形點數很多而已)

        void drawDot(const Vec2 &pos, float radius, const Color4F &color);

        //畫線段,從from到to,2*radius是線段的寬度和radius是線段兩頭半圓形的半徑

        void drawSegment(const Vec2 &from, const Vec2 &to, float radius, const Color4F &color);

        //畫多邊形,verts為點集,count為點數,fillColor為填充顏色,borderWidth為邊緣線寬,borderColor為邊緣線顏色

        void drawPolygon(Vec2 *verts, int count, const Color4F &fillColor, float borderWidth, const Color4F &borderColor);

        //畫三角形,三人頂點及其填充色

        void drawTriangle(const Vec2 &p1, const Vec2 &p2, const Vec2 &p3, const Color4F &color);

        //畫三次貝塞爾曲線

        void drawCubicBezier(const Vec2& from, const Vec2& control1, const Vec2& control2, const Vec2& to, unsigned int segments, const Color4F &color);

        //畫二次貝塞爾曲線

        void drawQuadraticBezier(const Vec2& from, const Vec2& control, const Vec2& to, unsigned int segments, const Color4F &color);

        /** Clear the geometry in the node's buffer. */

        void clear();

        /**

        * @js NA

        * @lua NA

        */

        const BlendFunc& getBlendFunc() const;

        /**

        * @code

        * When this function bound into js or lua,the parameter will be changed

        * In js: var setBlendFunc(var src, var dst)

        * @endcode

        * @lua NA

        */

        void setBlendFunc(const BlendFunc &blendFunc);

        void onDraw(const Mat4 &transform, uint32_t flags);

        // 新的繪圖渲染函數

        virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override;

        CC_CONSTRUCTOR_ACCESS:

        DrawNode();

        virtual ~DrawNode();

        virtual bool init();

        protected:

        void ensureCapacity(int count);

        GLuint _vao;

        GLuint _vbo;

        int _bufferCapacity;

        GLsizei _bufferCount;

        V2F_C4B_T2F *_buffer;

        BlendFunc _blendFunc;

        CustomCommand _customCommand;

        bool _dirty;

        private:

        CC_DISALLOW_COPY_AND_ASSIGN(DrawNode);

        };

        看完上面的API接口后,下面使用起來實在是太方便了。使用DrawNode 類繪制圖形是最簡單的方法,create一個DrawNode類,然后添加進場景。然后就可以愉快的繪圖了:

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        //創建DrawNode對象

        DrawNode *drawNode = DrawNode::create();

        //加入場景就OK

        this->addChild(drawNode, 20);

        //畫實心圓

        drawNode->drawDot(Vec2(100, 100), 50, Color4F(0.5,0.6,0,1));

        //畫線段

        drawNode->drawSegment(Vec2(100,100), Vec2(100,220), 0.5, Color4F(0,1,0,1));

        // 畫多邊形

        Vec2 points[] = { Vec2(s.height/4, 10), Vec2(s.width - 10, s.height/5), Vec2(s.width/3*2,s.height) };

        drawNode->drawPolygon(points, sizeof(points)/sizeof(points[0]), Color4F(1,0,0,0.5), 2, Color4F(0,0,1,1));

        // 畫三角形

        drawNode->drawTriangle(Vec2(10, 10), Vec2(70, 30), Vec2(100, 140), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));

        // 畫二次貝塞爾曲線

        drawNode->drawQuadraticBezier(Vec2(s.width - 150, s.height - 150), Vec2(s.width - 70, s.height - 10), Vec2(s.width - 10, s.height - 10),

        10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));

        // 畫三次貝塞爾曲線

        draw->drawCubicBezier(Vec2(s.width - 250, 40), Vec2(s.width - 70, 100), Vec2(s.width - 30, 250), Vec2(s.width - 10, s.height - 50),

        10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));

        基本用法就是這么簡單,如果需要別的形狀,自己組合DIY。


        來源網址:http://blog.csdn.net/ac_huang/article/details/39522473

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        cocos2d-x3.2DrawNode繪圖API

        cocos2d-x3.2DrawNode繪圖API:關于Cocos2d-x 3.x 版本的繪圖方法有兩種: 1、使用DrawNode類繪制自定義圖形。 2、繼承Layer類重寫draw()方法。 以上兩種方法都可以繪制自定義圖形,根據自己的需要選擇合適的方法,這里我們只討論第一種方法,第二種方法涉及到opengl的知識,暫不討論
        推薦度:
        標簽: API 繪圖 3.2
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 97人妻无码一区二区精品免费| 国产免费网站看v片在线| 100000免费啪啪18免进| 久久久久亚洲AV无码永不| 永久免费不卡在线观看黄网站| 亚洲中文字幕无码爆乳AV| 中文字幕av无码不卡免费| 亚洲色大成网站WWW久久九九| 久久av免费天堂小草播放| 久久亚洲国产成人精品无码区| 中文在线免费观看| 亚洲伦理一区二区| 在线看免费观看AV深夜影院 | 国产精品亚洲а∨无码播放| 日韩av无码免费播放| 亚洲伊人tv综合网色| 24小时日本在线www免费的| 亚洲AV香蕉一区区二区三区| 可以免费观看一级毛片黄a| caoporm超免费公开视频| 国产AV无码专区亚洲精品| 最近免费中文字幕大全高清大全1| 亚洲精品在线不卡| 天天看免费高清影视| 人人公开免费超级碰碰碰视频| 亚洲精品国产精品乱码不卡√| 91在线手机精品免费观看| 久久国产亚洲精品| 精品国产亚洲男女在线线电影| 久久爰www免费人成| 亚洲色中文字幕在线播放| 亚洲精品天堂成人片?V在线播放| 国产一精品一AV一免费| 国产日本亚洲一区二区三区 | 久久免费高清视频| 91在线亚洲综合在线| 亚洲欧洲精品成人久久曰影片 | 美女免费精品高清毛片在线视| 亚洲AV永久精品爱情岛论坛| 在线观看免费毛片| 免费成人高清在线视频|