国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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
主站蜘蛛池模板: 拍真实国产伦偷精品 | 欧美日韩一二 | 日本三级成人中文字幕乱码 | 四虎影在线永久免费观看 | 91中文字幕在线播放 | 情趣视频网站 | 亚洲精品不卡久久久久久 | 国产毛片一区二区 | 国产亚洲精品片a77777 | 欧美 亚洲 中文字幕 | 国产成人99久久亚洲综合精品 | 国产日韩一区二区三区在线观看 | 一级毛片免费下载 | 一区二区三区视频 | 亚洲啪视频 | 午夜日韩精品 | 亚洲欧洲在线观看 | 在线国产视频 | 欧美日韩精 | 久久99国产精品成人欧美 | 亚洲精品国产字幕久久vr | 国产一区 在线播放 | 日韩精品欧美亚洲高清有无 | 日韩1页| 好看的电影网站亚洲一区 | 久久一区二区三区四区 | 久久久影院亚洲精品 | 在线免费一区 | 亚洲国产欧美91 | 免费精品国产 | 国产成人精品aaaa视频一区 | 伊人激情网 | 99免费在线视频 | 国产精品hd免费观看 | 日日摸日日 | 国产精品成人久久久久 | 久久久久久国产精品免费 | 日韩免费网站 | 亚洲小视频在线 | 欧美日韩一区二区三区四区 | 欧美高清不卡 |