axmol/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.h

197 lines
4.8 KiB
C
Raw Normal View History

2015-04-23 18:03:03 +08:00
#ifndef __cocos2d_tests__SpritePolygonTest__
2015-06-06 13:31:25 +08:00
2015-04-23 18:03:03 +08:00
#include "../BaseTest.h"
2015-06-04 15:43:31 +08:00
#include "ui/CocosGUI.h"
2015-06-06 13:31:25 +08:00
DEFINE_TEST_SUITE(SpritePolygonTest);
2015-06-04 15:43:31 +08:00
class SpritePolygonTestCase : public TestCase
2015-04-23 18:03:03 +08:00
{
protected:
std::string _title;
std::string _subtitle;
2015-08-26 18:14:25 +08:00
bool _isDebugDraw;
bool _isNeedDebugMenu;
cocos2d::Vector<cocos2d::DrawNode* > _drawNodes;
virtual std::string title() const override {return _title;};
virtual std::string subtitle() const override {return _subtitle;};
2015-08-26 18:14:25 +08:00
virtual bool init() override;
virtual void onEnter()override;
virtual void onExit()override;
2015-08-26 18:14:25 +08:00
SpritePolygonTestCase();
~SpritePolygonTestCase();
void updateDrawNode();
2015-04-23 18:03:03 +08:00
};
class SpritePolygonTestDemo : public SpritePolygonTestCase
{
protected:
2015-08-26 18:14:25 +08:00
cocos2d::Sprite* _polygonSprite;
cocos2d::Sprite* _normalSprite;
virtual bool init() override;
virtual void initSprites(){};
void initTouches();
};
2015-06-04 15:43:31 +08:00
class SpritePolygonTest1 : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTest1);
SpritePolygonTest1();
Renderer improvments: TriangleCommand and QuadCommand merged - more options for batching (faster) - less flushing in between commands (faster) - less renderer code (easier to maintain) - less VBO/VAO (less memory) - uses temporary buffer for faster rendering (more memory) - QuadCommand is just a subclass of TriangleCommand (simpler) - but statically it allocates indices internally (like any TriangleCommand) (more memory, but not that much) - adds more tests for SpritePolygon - adds test for batching Tri + Quad command - and fixes some other bugs Squashed commit of the following: commit cce893a9114da5dda91a895e4e661894f365e2c7 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Mon Feb 8 06:56:57 2016 -0800 QuadCommand: indices are static thanks @Darinex commit e5fd1c14e93d2f07b8266bfec03cf7206d348f59 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 19:18:42 2016 -0800 little improvements in xcode proj management commit 6cd29764e01ad300f4e89e62aa6b399f73e94f01 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 19:05:52 2016 -0800 Renderer improvments: TriangleCommand and QuadCommand merged - more options for batching (faster) - less flushing in between commands (faster) - less renderer code (easier to maintain) - less VBO/VAO (less memory) - uses temporary buffer for faster rendering (more memory) and fixes some other bugs Squashed commit of the following: commit af7a209435c5f2430c31ab3ebcc7f45051eacb1a Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 18:55:27 2016 -0800 adds test for batching quads and tris commit 25816e3eaeffd4b0cfe5fa15e97ff84e9013b8be Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 18:40:15 2016 -0800 cleanup renderer commit 7f9785056681756c865d603516c7e14c46040e82 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 15:34:48 2016 -0800 clean up docs commit 92a8b679dd404e4ca2839d85e2bd925195b12996 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 15:18:52 2016 -0800 QuadCommand converted to Triangles command commit 7e21ec12d3781f6964b4d639cfa4bdc79eb8ae80 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Fri Feb 5 16:17:29 2016 -0800 adds missing files... new test as well commit d1bd4391785515bdc2e1bebbeb3f321f983b51f2 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Fri Feb 5 14:35:41 2016 -0800 more tests for poly sprites commit 5775a25b1046671bd0f5af4c5ab52b308b34bb39 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Fri Feb 5 00:30:13 2016 -0800 malloc instead of std::vector commit 14a5d45cc978c55a182c03f181ca2bc603776561 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 21:40:46 2016 -0800 little optimization commit 5667cb2b62416f8a439a54c3973d5841fbe1b68b Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 19:13:13 2016 -0800 quad works as expected commit 462aef05baa6586591882faa366839bead4be068 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 15:22:59 2016 -0800 works commit c789e6c42811278563c7682b5620296ae8d84aeb Merge: d6c3729 de62924 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 14:08:49 2016 -0800 Merge branch 'v3' into uniform_matrix_auto commit d6c37297954af752ebf42ec5f71e5e2fe28c9cc2 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 13:54:07 2016 -0800 works ok... commit 45c288631989ea735cc31ec5aa683d9d41aacab3 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 12:58:34 2016 -0800 quad works! commit 7137cff51df09adee7129738cea2b69da090756e Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Feb 3 16:19:34 2016 -0800 more optimizations... WIP... doesn't work yet commit a8324c1a9acb6b82102e05eee6e5e5f341306c7b Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Tue Feb 2 21:59:42 2016 -0800 compiles in release mode more tests... better threshold commit 884ffc756e7520fcbb9252260181538ec81b8368 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Tue Feb 2 17:21:32 2016 -0800 initial uniform_auto_matrix commit Changes the CC_matrix uniform in runtime depending on whether the command can be batched or not. Lot of things missing, though... like performance tests.
2016-02-09 03:25:37 +08:00
void initSprites() override;
2015-06-04 15:43:31 +08:00
};
class SpritePolygonTest2 : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTest2);
SpritePolygonTest2();
2015-08-26 18:14:25 +08:00
virtual void initSprites() override;
2015-06-04 15:43:31 +08:00
};
2015-07-31 15:49:44 +08:00
class SpritePolygonTestSlider : public SpritePolygonTestCase
{
protected:
cocos2d::Label *_epsilonLabel;
2015-08-26 18:14:25 +08:00
int _tagIndex;
2015-07-31 15:49:44 +08:00
cocos2d::Sprite* makeSprite(const std::string& filename, const cocos2d::Vec2& pos);
2015-08-26 18:14:25 +08:00
virtual bool init() override;
void initSliders();
virtual void initSprites(){};
2015-07-31 15:49:44 +08:00
void makeSprites(const std::string* list, const int count, const float y);
void changeEpsilon(Ref *pSender, cocos2d::ui::Slider::EventType type);
void updateLabel(const cocos2d::Sprite* sp, const cocos2d::PolygonInfo &pinfo);
};
class SpritePolygonTest3 : public SpritePolygonTestSlider
{
public:
CREATE_FUNC(SpritePolygonTest3);
SpritePolygonTest3();
2015-08-26 18:14:25 +08:00
void initSprites() override;
2015-07-31 15:49:44 +08:00
};
class SpritePolygonTest4 : public SpritePolygonTestSlider
{
public:
CREATE_FUNC(SpritePolygonTest4);
SpritePolygonTest4();
2015-08-26 18:14:25 +08:00
void initSprites() override;
2015-07-31 15:49:44 +08:00
};
class SpritePolygonTest5 : public SpritePolygonTestCase
{
public:
CREATE_FUNC(SpritePolygonTest5);
SpritePolygonTest5();
2015-08-26 18:14:25 +08:00
protected:
virtual bool init() override;
2015-07-31 15:49:44 +08:00
void initTouch();
void loadDefaultSprites();
void addSpritePolygon(const cocos2d::Vec2& pos);
void update(float dt)override;
2015-07-31 15:49:44 +08:00
private:
cocos2d::PolygonInfo _polygonInfo;
2015-08-26 18:14:25 +08:00
int _tagIndex;
2015-07-31 15:49:44 +08:00
};
2015-06-04 15:43:31 +08:00
class SpritePolygonPerformance : public SpritePolygonTestCase
{
public:
CREATE_FUNC(SpritePolygonPerformance);
SpritePolygonPerformance();
protected:
2015-08-26 18:14:25 +08:00
int _spriteCount;
int _vertCount;
int _triCount;
int _pixelCount;
float _elapsedTime;
cocos2d::Label * _perfLabel;
int _continuousLowDt;
float _continuousHighDtTime;
float _waitingTime;
2015-06-04 15:43:31 +08:00
int _posX;
int _posY;
int _leftX;
int _rightX;
bool goRight;
bool ended;
float prevDt;
unsigned int _incVert;
unsigned int _incTri;
unsigned int _incPix;
2015-08-26 18:14:25 +08:00
void updateLabel();
virtual void update(float dt)override;
2015-08-26 18:14:25 +08:00
virtual bool init() override;
virtual Node* makeSprite();
void incrementStats();
virtual void initIncrementStats(){};
};
2015-06-04 15:43:31 +08:00
class SpritePolygonPerformanceTestDynamic : public SpritePolygonPerformance
{
public:
2015-06-04 15:43:31 +08:00
CREATE_FUNC(SpritePolygonPerformanceTestDynamic);
SpritePolygonPerformanceTestDynamic();
protected:
2015-08-26 18:14:25 +08:00
cocos2d::Sprite* makeSprite() override;
2015-06-04 15:43:31 +08:00
cocos2d::PolygonInfo _pinfo;
2015-08-26 18:14:25 +08:00
virtual void initIncrementStats() override;
};
2015-06-04 15:43:31 +08:00
class SpritePerformanceTestDynamic : public SpritePolygonPerformance
{
public:
2015-06-04 15:43:31 +08:00
CREATE_FUNC(SpritePerformanceTestDynamic);
SpritePerformanceTestDynamic();
protected:
2015-08-26 18:14:25 +08:00
virtual cocos2d::Sprite* makeSprite() override;
virtual void initIncrementStats() override;
};
Renderer improvments: TriangleCommand and QuadCommand merged - more options for batching (faster) - less flushing in between commands (faster) - less renderer code (easier to maintain) - less VBO/VAO (less memory) - uses temporary buffer for faster rendering (more memory) - QuadCommand is just a subclass of TriangleCommand (simpler) - but statically it allocates indices internally (like any TriangleCommand) (more memory, but not that much) - adds more tests for SpritePolygon - adds test for batching Tri + Quad command - and fixes some other bugs Squashed commit of the following: commit cce893a9114da5dda91a895e4e661894f365e2c7 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Mon Feb 8 06:56:57 2016 -0800 QuadCommand: indices are static thanks @Darinex commit e5fd1c14e93d2f07b8266bfec03cf7206d348f59 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 19:18:42 2016 -0800 little improvements in xcode proj management commit 6cd29764e01ad300f4e89e62aa6b399f73e94f01 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 19:05:52 2016 -0800 Renderer improvments: TriangleCommand and QuadCommand merged - more options for batching (faster) - less flushing in between commands (faster) - less renderer code (easier to maintain) - less VBO/VAO (less memory) - uses temporary buffer for faster rendering (more memory) and fixes some other bugs Squashed commit of the following: commit af7a209435c5f2430c31ab3ebcc7f45051eacb1a Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 18:55:27 2016 -0800 adds test for batching quads and tris commit 25816e3eaeffd4b0cfe5fa15e97ff84e9013b8be Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 18:40:15 2016 -0800 cleanup renderer commit 7f9785056681756c865d603516c7e14c46040e82 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 15:34:48 2016 -0800 clean up docs commit 92a8b679dd404e4ca2839d85e2bd925195b12996 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Sun Feb 7 15:18:52 2016 -0800 QuadCommand converted to Triangles command commit 7e21ec12d3781f6964b4d639cfa4bdc79eb8ae80 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Fri Feb 5 16:17:29 2016 -0800 adds missing files... new test as well commit d1bd4391785515bdc2e1bebbeb3f321f983b51f2 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Fri Feb 5 14:35:41 2016 -0800 more tests for poly sprites commit 5775a25b1046671bd0f5af4c5ab52b308b34bb39 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Fri Feb 5 00:30:13 2016 -0800 malloc instead of std::vector commit 14a5d45cc978c55a182c03f181ca2bc603776561 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 21:40:46 2016 -0800 little optimization commit 5667cb2b62416f8a439a54c3973d5841fbe1b68b Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 19:13:13 2016 -0800 quad works as expected commit 462aef05baa6586591882faa366839bead4be068 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 15:22:59 2016 -0800 works commit c789e6c42811278563c7682b5620296ae8d84aeb Merge: d6c3729 de62924 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 14:08:49 2016 -0800 Merge branch 'v3' into uniform_matrix_auto commit d6c37297954af752ebf42ec5f71e5e2fe28c9cc2 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 13:54:07 2016 -0800 works ok... commit 45c288631989ea735cc31ec5aa683d9d41aacab3 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Thu Feb 4 12:58:34 2016 -0800 quad works! commit 7137cff51df09adee7129738cea2b69da090756e Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Feb 3 16:19:34 2016 -0800 more optimizations... WIP... doesn't work yet commit a8324c1a9acb6b82102e05eee6e5e5f341306c7b Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Tue Feb 2 21:59:42 2016 -0800 compiles in release mode more tests... better threshold commit 884ffc756e7520fcbb9252260181538ec81b8368 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Tue Feb 2 17:21:32 2016 -0800 initial uniform_auto_matrix commit Changes the CC_matrix uniform in runtime depending on whether the command can be batched or not. Lot of things missing, though... like performance tests.
2016-02-09 03:25:37 +08:00
class SpritePolygonTestNoCrash : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestNoCrash);
SpritePolygonTestNoCrash();
virtual void initSprites() override;
};
class SpritePolygonTestTPIsland : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestTPIsland);
SpritePolygonTestTPIsland();
virtual void initSprites() override;
};
class SpritePolygonTestAutoPolyIsland : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestAutoPolyIsland);
SpritePolygonTestAutoPolyIsland();
virtual void initSprites() override;
};
class SpritePolygonTestFrameAnim : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(SpritePolygonTestFrameAnim);
SpritePolygonTestFrameAnim();
virtual void initSprites() override;
};
class Issue14017Test : public SpritePolygonTestDemo
{
public:
CREATE_FUNC(Issue14017Test);
Issue14017Test();
virtual void initSprites() override;
};
2015-04-23 18:03:03 +08:00
#endif /* defined(__cocos2d_tests__SpritePolygonTest__) */