歡迎轉載!轉載時請註明出處:http://blog.csdn.net/aa4790139/article/details/8103608
由於小弟本人一直和遊戲有著不解之緣,從小就特喜歡玩遊戲,然後讀大學,選專業都選了一個遊戲專業,唉~ 各種貴...不過喜歡沒辦法。
然後出來是做J2ME的,然後轉android遊戲開發,尤其是有J2ME的朋友,相信都是從底層繪製開始的。在之前也用AndEngine引擎開發過兩款遊戲,除了底層繪製是用C++寫的,其他都是java寫的,然後出校以來,一直用的是java開發,所以對java比較熟悉,自然選擇用AndEngine引擎開發...由於之前都是手工繪製,所以往往在螢幕回事那款,遇到各種讓人蛋疼的事,適配的不是很好,AndEngine適配的非常好,另外一個特點,載入的記憶體很有限,所以經常記憶體溢出,不過可以採用TexturePacker來處理圖片,可以減少咋用記憶體。對於從事java開發的,初學AndEngine引擎還是挺好的。
cocos2d-x自然也將圖形繪製都封裝好了,不過對於底層的圖形繪製懂一點還是有好處的。。。廢話不多說了,以後你就會懂得...
雖然cocos2dx中內建有test,test也有裡面關於基本的圖形繪製講的也比較詳細,但是現在我要你從頭開始,繪製基本的圖形,你會嗎?
(注意:一下的名字,你都可以自己命名)
第一部分:工程的建立
第一步:建立win32的BaseDrawTest的工程
一下為我的工程目錄:
紅色來的檔案夾到cocos2d-x目錄下去copy到工程目錄下....Debug.win32你的暫時沒有,需要編譯後才會產生.
(補充:我這樣做的原因,是因為我想將win32的工程放到一個win32project目錄下,如果我們移植到android上,cocos2dx程式的產生,是在cocos2dx引擎目錄下的,為了區分所以分開存放:
1、如果你在cocos2dx引擎下建立的win32工程,那你就不需要包含下面的6個目錄了,因為利用vs產生cocos2dx工程,預設設定了這些路徑,如:
2、如果想我一樣,單獨建立cocos2d-x-win32-projects檔案夾來儲存cocos2dx的win32工程,我們只需copy去cocos2dx引擎中Box2d,cocos2dx,CocosDenshion,lib(裡面的檔案,其實就是Cocos2dx引擎下的Debug檔案夾中的lib檔案copy過來,建立的一個檔案),然後在cocos2d-x-win32-projects下利用vs建立cocos2dx的win32工程,包含如下目錄:
)
第二步:開啟BashDrawTest.sln,然後添加對應的目錄
然後右擊工程選擇屬性:
如:
選擇框出來的,VC++目錄,然後添加包含目錄、引用目錄、庫目錄...點後面的三角行,編輯,添加對應的目錄:
包含目錄和引用目錄:如檔案:
請選擇你對應的目錄包含進去,然後庫目錄,就是你BaseDrawTest目錄下的lib,之前叫你copy 到工程目錄下的..
現在好了,編譯產生,成功顯示HelloWorld,如果不顯示請查看http://blog.csdn.net/aa4790139/article/details/8086635
第二部分:圖形繪製
第一步:建立自己的情境和層
如下:我建立BaseScene情境和BaseDrawLayer層
第二步:編寫我們這四個檔案的代碼
老樣子,上傳My Code...
BaseDrawScene.h
#pragma once#include "cocos2d.h"#include "BaseDrawLayer.h"using namespace cocos2d;class BaseDrawScene :public CCScene{public:~BaseDrawScene(void);//第一種:建立方式static CCScene* scene();/*第二種:建立方式static BaseDrawScene* scene(){BaseDrawScene * scene = BaseDrawScene::create();//注意:就得重寫父類的create方法BaseDrawLayer* layer=BaseDrawLayer::create();scene->addChild(layer);return scene;} SCENE_CREATE_FUNC(BaseDrawScene); */};
BaseDrawScene.cpp
#include "BaseDrawScene.h"BaseDrawScene::~BaseDrawScene(){}CCScene* BaseDrawScene::scene(){CCScene * scene = CCScene::create();BaseDrawLayer* layer=BaseDrawLayer::create();scene->addChild(layer);return scene;}
BaseDrawLayer.h
#include "cocos2d.h"using namespace cocos2d;class BaseDrawLayer:public CCLayer{public:BaseDrawLayer();~BaseDrawLayer(void);virtual void draw();LAYER_CREATE_FUNC(BaseDrawLayer);};
BaseDrawLayer.cpp
#include "BaseDrawLayer.h"BaseDrawLayer::BaseDrawLayer(){}BaseDrawLayer::~BaseDrawLayer(void){}void BaseDrawLayer::draw(){//注意:注意OpenGL的座標系,起始點為左下角CCSize s=CCDirector::sharedDirector()->getWinSize();//設定點大小、顏色,然後繪製一個點glPointSize(64);glColor4f(0.0,0.0,1.0,0.5);ccDrawPoint(ccp(s.width/2+10,s.height/2));//繪製一條線,參數為起始點和終點的座標glEnable(GL_LINE_SMOOTH);ccDrawLine(ccp(0,0),ccp(s.width,s.height)); // 設定線的寬度,顏色,然後繪製一個圓 glLineWidth(2); ccDrawColor4B(0, 255, 255, 255);//參數說明:中心點座標,半徑,角度,分段數,經過中間的線是否顯示 ccDrawCircle( ccp(s.width/2, s.height/2), 50, 0, 50, false);//繪製多邊形ccDrawColor4B(255, 255, 0, 255); glLineWidth(10); CCPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) }; //參數說明:點集合,點數,這五個點是否構成閉合ccDrawPoly( vertices, 5, false);//繪製實心多邊形glLineWidth(1);CCPoint filledVertices[] = { ccp(0,120), ccp(50,120), ccp(50,170), ccp(25,200), ccp(0,170) };ccDrawSolidPoly(filledVertices, 5, ccc4f(0.5f, 0.5f, 1, 1 ) );//繪製三角形ccDrawColor4B(255, 0, 255, 255); glLineWidth(2); CCPoint vertices2[] = { ccp(30,130), ccp(30,230), ccp(50,200) }; ccDrawPoly( vertices2, 3, true);//繪製一個控制點貝瑟爾曲線//參數說明:起點、控制點、終點,分段數ccDrawQuadBezier(ccp(0,s.height), ccp(s.width/2,s.height/2), ccp(s.width,s.height), 50);//繪製兩個控制點貝瑟爾曲線ccDrawCubicBezier(ccp(s.width/2, s.height/2), ccp(s.width/2+30,s.height/2+50), ccp(s.width/2+60,s.height/2-50),ccp(s.width, s.height/2),100); //繪製填充的菱形 CCPoint vertices3[] = {ccp(60,160), ccp(70,190), ccp(100,190), ccp(90,160)}; ccDrawSolidPoly( vertices3, 4, ccc4f(1,1,0,1) ); // 恢複opengl繪製的原始值 glLineWidth(1); ccDrawColor4B(255,255,255,255); ccPointSize(1);}
第三步:修改AppDelegate.cpp中的applicationDidFinishLaunching()方法
CCScene *pScene =BaseDrawScene::scene();
pDirector->runWithScene(pScene);
第四步:運行..報錯缺少各種.dll庫
第五步:到Cocos2dx引擎目錄下的Debug.win32檔案夾下把下面的.dll庫都copy到你工程目錄下的Debug.win32檔案下....再運行,ok
繪製的效果應該就出來了....繪製過程中的資料調節測試,就有大家熟悉吧!如果講述得有誤,或者不對的地方,還望各位指出!