<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
        主站蜘蛛池模板: 免费永久在线观看黄网站| 四虎永久在线精品免费观看视频| 免费无码又爽又高潮视频| 亚洲国产成人九九综合| 18禁美女裸体免费网站| 亚洲精品在线播放| jjizz全部免费看片| 亚洲av无码专区在线| 女人18毛片a级毛片免费| 亚洲色大成WWW亚洲女子| 日本免费网站观看| 国产成人高清亚洲一区久久| 免费一级毛片在线观看| 一区二区三区在线观看免费| 中文字幕亚洲一区| 久久免费线看线看| 亚洲妓女综合网99| 在线播放免费播放av片| 国产亚洲男人的天堂在线观看| 亚洲日韩在线中文字幕第一页 | 亚洲精品国产自在久久| 免费大片黄在线观看| 亚洲香蕉成人AV网站在线观看| 99久久成人国产精品免费| 亚洲第一福利网站| 91免费资源网站入口| 亚洲AV成人精品一区二区三区| 国产a v无码专区亚洲av| 成全动漫视频在线观看免费高清版下载| 国产亚洲成av人片在线观看| 三年片在线观看免费观看大全动漫| 亚洲精品乱码久久久久久下载 | 亚洲1区2区3区精华液| 国产精品亚洲mnbav网站| 日韩精品无码免费一区二区三区| 亚洲最大中文字幕| 免费国产成人高清在线观看麻豆 | 99精品一区二区免费视频| 77777午夜亚洲| 亚洲日韩中文在线精品第一| 亚洲免费黄色网址|