29#include "../testResource.h"
39Texture2DTests::Texture2DTests()
120 auto col = LayerColor::create(Color4B(128,128,128,255));
123 auto textureCache = Director::getInstance()->getTextureCache();
124 log(
"%s\n", textureCache->getCachedTextureInfo().c_str());
129 auto textureCache = Director::getInstance()->getTextureCache();
130 textureCache->removeUnusedTextures();
131 log(
"%s\n", textureCache->getCachedTextureInfo().c_str());
144 auto s = Director::getInstance()->getWinSize();
146 auto img = Sprite::create(
"TileMaps/levelmap.tga");
147 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
149 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
166 auto s = Director::getInstance()->getWinSize();
168 auto img = Sprite::create(
"Images/test_image.png");
169 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
171 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
175 auto i8 = Sprite::create(
"Images/test_image_i8.png");
176 i8->setPosition(s.width/4.0f, s.height/4.0f);
180 auto ai88 = Sprite::create(
"Images/test_image_ai88.png");
181 ai88->setPosition(s.width / 4.0f, s.height * 3.0f / 4.0f);
185 auto rgb888 = Sprite::create(
"Images/test_image_rgb888.png");
186 rgb888->setPosition(s.width * 3.0f / 4.0f, s.height / 4.0f);
190 auto rgba8888 = Sprite::create(
"Images/test_image_rgba8888.png");
191 rgba8888->setPosition(s.width * 3.0f / 4.0f, s.height * 3.0f / 4.0f);
202 return "LB:I8, LT:AI8\nRB:RGB888, RT: RGBA8888";
213 auto s = Director::getInstance()->getWinSize();
215 auto img = Sprite::create(
"Images/test_image.jpeg");
216 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
218 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
234 auto s = Director::getInstance()->getWinSize();
236 auto img = Sprite::create(
"Images/test_image.webp");
237 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
239 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
240 Texture2D* texture = Director::getInstance()->getTextureCache()->getTextureForKey(
"Images/test_image.webp");
241 log(
"pixel format:%d, premultiplied alpha:%d\n",
static_cast<int>(texture->getPixelFormat()), texture->hasPremultipliedAlpha());
246 return "WEBP with alpha Test";
257 auto s = Director::getInstance()->getWinSize();
259 auto img = Sprite::create(
"Images/test_image_no_alpha.webp");
260 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
262 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
263 Texture2D* texture = Director::getInstance()->getTextureCache()->getTextureForKey(
"Images/test_image_no_alpha.webp");
264 log(
"pixel format:%d, premultiplied alpha:%d\n",
static_cast<int>(texture->getPixelFormat()), texture->hasPremultipliedAlpha());
269 return "WEBP without alpha Test";
280 auto s = Director::getInstance()->getWinSize();
282 auto texture0 = Director::getInstance()->getTextureCache()->addImage(
"Images/grossini_dance_atlas.png");
283 texture0->generateMipmap();
284 Texture2D::TexParams texParams = {
285 backend::SamplerFilter::LINEAR_MIPMAP_LINEAR,
286 backend::SamplerFilter::LINEAR,
287 backend::SamplerAddressMode::CLAMP_TO_EDGE,
288 backend::SamplerAddressMode::CLAMP_TO_EDGE };
289 texture0->setTexParameters(texParams);
291 auto texture1 = Director::getInstance()->getTextureCache()->addImage(
"Images/grossini_dance_atlas_nomipmap.png");
293 auto img0 = Sprite::createWithTexture(texture0);
294 img0->setTextureRect(Rect(85, 121, 85, 121));
295 img0->setPosition(Vec2( s.width/3.0f, s.height/2.0f));
298 auto img1 = Sprite::createWithTexture(texture1);
299 img1->setTextureRect(Rect(85, 121, 85, 121));
300 img1->setPosition(Vec2( 2*s.width/3.0f, s.height/2.0f));
304 auto scale1 = EaseOut::create(ScaleBy::create(4, 0.01f), 3);
305 auto sc_back = scale1->reverse();
307 auto scale2 = scale1->clone();
308 auto sc_back2 = scale2->reverse();
310 img0->runAction(RepeatForever::create(Sequence::create(scale1, sc_back,
nullptr)));
311 img1->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2,
nullptr)));
312 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
317 return "Texture Mipmap";
322 return "Left image uses mipmap. Right image doesn't";
335 auto s = Director::getInstance()->getWinSize();
337 auto imgMipMap = Sprite::create(
"Images/logo-mipmap.pvr");
340 imgMipMap->setPosition(Vec2( s.width/2.0f-100, s.height/2.0f));
344 Texture2D::TexParams texParams = {
345 backend::SamplerFilter::LINEAR_MIPMAP_LINEAR,
346 backend::SamplerFilter::LINEAR,
347 backend::SamplerAddressMode::CLAMP_TO_EDGE,
348 backend::SamplerAddressMode::CLAMP_TO_EDGE };
349 imgMipMap->getTexture()->setTexParameters(texParams);
352 auto img = Sprite::create(
"Images/logo-nomipmap.pvr");
355 img->setPosition(Vec2( s.width/2.0f+100, s.height/2.0f));
358 auto scale1 = EaseOut::create(ScaleBy::create(4, 0.01f), 3);
359 auto sc_back = scale1->reverse();
361 auto scale2 = scale1->clone();
362 auto sc_back2 = scale2->reverse();
364 imgMipMap->runAction(RepeatForever::create(Sequence::create(scale1, sc_back,
nullptr)));
365 img->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2,
nullptr)));
367 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
372 return "PVRTC MipMap Test";
376 return "Left image uses mipmap. Right image doesn't";
387 auto s = Director::getInstance()->getWinSize();
389 auto imgMipMap = Sprite::create(
"Images/test_image_rgba4444_mipmap.pvr");
390 imgMipMap->setPosition(Vec2( s.width/2.0f-100, s.height/2.0f));
394 Texture2D::TexParams texParams = {
395 backend::SamplerFilter::LINEAR_MIPMAP_LINEAR,
396 backend::SamplerFilter::LINEAR,
397 backend::SamplerAddressMode::CLAMP_TO_EDGE,
398 backend::SamplerAddressMode::CLAMP_TO_EDGE };
399 imgMipMap->getTexture()->setTexParameters(texParams);
401 auto img = Sprite::create(
"Images/test_image.png");
402 img->setPosition(Vec2( s.width/2.0f+100, s.height/2.0f));
405 auto scale1 = EaseOut::create(ScaleBy::create(4, 0.01f), 3);
406 auto sc_back = scale1->reverse();
408 auto scale2 = scale1->clone();
409 auto sc_back2 = scale2->reverse();
411 imgMipMap->runAction(RepeatForever::create(Sequence::create(scale1, sc_back,
nullptr)));
412 img->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2,
nullptr)));
413 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
418 return "PVR MipMap Test #2";
423 return "Left image uses mipmap. Right image doesn't";
436 auto s = Director::getInstance()->getWinSize();
438 auto img = Sprite::create(
"Images/test_image_pvrtc2bpp.pvr");
442 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
445 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
450 return "PVR TC 2bpp Test";
463 auto s = Director::getInstance()->getWinSize();
465 auto img = Sprite::create(
"Images/test_image.pvr");
469 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
474 log(
"This test is not supported.");
476 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
482 return "PVR TC 4bpp Test #2";
495 auto s = Director::getInstance()->getWinSize();
497 auto img = Sprite::create(
"Images/test_image_pvrtc4bpp.pvr");
501 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
506 log(
"This test is not supported in cocos2d-mac");
508 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
513 return "PVR TC 4bpp Test #3";
526 auto s = Director::getInstance()->getWinSize();
528 auto img = Sprite::create(
"Images/test_image_rgba8888.pvr");
529 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
531 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
536 return "PVR + RGBA 8888 Test";
549 auto s = Director::getInstance()->getWinSize();
551 auto img = Sprite::create(
"Images/test_image_bgra8888.pvr");
554 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
559 log(
"BGRA8888 images are not supported");
561 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
566 return "PVR + BGRA 8888 Test";
579 auto s = Director::getInstance()->getWinSize();
580 auto img = Sprite::create(
"Images/test_image_rgba5551.pvr");
581 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
583 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
588 return "PVR + RGBA 5551 Test";
601 auto s = Director::getInstance()->getWinSize();
603 auto img = Sprite::create(
"Images/test_image_rgba4444.pvr");
604 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
606 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
611 return "PVR + RGBA 4444 Test";
624 auto s = Director::getInstance()->getWinSize();
626#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
628 auto img = Sprite::create(
"Images/test_image_rgba4444.pvr");
630 auto img = Sprite::create(
"Images/test_image_rgba4444.pvr.gz");
632 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
634 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
639 return "PVR + RGBA 4444 + GZ Test";
644 return "This is a gzip PVR image";
657 auto s = Director::getInstance()->getWinSize();
659 auto img = Sprite::create(
"Images/test_image_rgba4444.pvr.ccz");
660 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
662 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
667 return "PVR + RGBA 4444 + CCZ Test";
672 return "This is a ccz PVR image";
685 auto s = Director::getInstance()->getWinSize();
687 auto img = Sprite::create(
"Images/test_image_rgb565.pvr");
688 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
690 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
695 return "PVR + RGB 565 Test";
704 auto s = Director::getInstance()->getWinSize();
706 auto img = Sprite::create(
"Images/test_image_rgb888.pvr");
709 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
713 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
718 return "PVR + RGB 888 Test";
731 auto s = Director::getInstance()->getWinSize();
733 auto img = Sprite::create(
"Images/test_image_a8.pvr");
734 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
736 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
742 return "PVR + A8 Test";
755 auto s = Director::getInstance()->getWinSize();
757 auto img = Sprite::create(
"Images/test_image_i8.pvr");
758 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
760 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
765 return "PVR + I8 Test";
778 auto s = Director::getInstance()->getWinSize();
780 auto img = Sprite::create(
"Images/test_image_ai88.pvr");
781 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
783 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
788 return "PVR + AI88 Test";
795 auto s = Director::getInstance()->getWinSize();
797 auto img = Sprite::create(
"Images/test_image_pvrtc2bpp_v3.pvr");
801 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
805 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
810 return "PVR TC 2bpp Test";
815 return "Testing PVR File Format v3";
822 auto s = Director::getInstance()->getWinSize();
824 auto img = Sprite::create(
"Images/test_image_pvrtcii2bpp_v3.pvr");
828 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
832 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
837 return "PVR TC II 2bpp Test";
842 return "Testing PVR File Format v3";
849 auto s = Director::getInstance()->getWinSize();
851 auto img = Sprite::create(
"Images/test_image_pvrtc4bpp_v3.pvr");
855 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
860 log(
"This test is not supported");
863 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
868 return "PVR TC 4bpp Test";
873 return "Testing PVR File Format v3";
884 auto s = Director::getInstance()->getWinSize();
886 auto img = Sprite::create(
"Images/test_image_pvrtcii4bpp_v3.pvr");
890 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
895 log(
"This test is not supported");
898 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
903 return "PVR TC II 4bpp Test";
908 return "Testing PVR File Format v3";
915 auto s = Director::getInstance()->getWinSize();
917 auto img = Sprite::create(
"Images/test_image_rgba8888_v3.pvr");
921 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
925 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
930 return "PVR + RGBA 8888 Test";
935 return "Testing PVR File Format v3";
942 auto s = Director::getInstance()->getWinSize();
944 auto img = Sprite::create(
"Images/test_image_bgra8888_v3.pvr");
948 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
953 log(
"BGRA images are not supported");
956 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
961 return "PVR + BGRA 8888 Test";
966 return "Testing PVR File Format v3";
973 auto s = Director::getInstance()->getWinSize();
975 auto img = Sprite::create(
"Images/test_image_rgba5551_v3.pvr");
979 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
983 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
988 return "PVR + RGBA 5551 Test";
993 return "Testing PVR File Format v3";
1000 auto s = Director::getInstance()->getWinSize();
1002 auto img = Sprite::create(
"Images/test_image_rgba4444_v3.pvr");
1006 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
1010 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1015 return "PVR + RGBA 4444 Test";
1020 return "Testing PVR File Format v3";
1027 auto s = Director::getInstance()->getWinSize();
1029 auto img = Sprite::create(
"Images/test_image_rgb565_v3.pvr");
1033 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
1037 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1042 return "PVR + RGB 565 Test";
1047 return "Testing PVR File Format v3";
1054 auto s = Director::getInstance()->getWinSize();
1056 auto img = Sprite::create(
"Images/test_image_rgb888_v3.pvr");
1060 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
1064 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1069 return "PVR + RGB 888 Test";
1074 return "Testing PVR File Format v3";
1081 auto s = Director::getInstance()->getWinSize();
1083 auto img = Sprite::create(
"Images/test_image_a8_v3.pvr");
1087 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
1091 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1096 return "PVR + A8 Test";
1101 return "Testing PVR File Format v3";
1108 auto s = Director::getInstance()->getWinSize();
1110 auto img = Sprite::create(
"Images/test_image_i8_v3.pvr");
1114 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
1118 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1123 return "PVR + I8 Test";
1128 return "Testing PVR File Format v3";
1135 auto s = Director::getInstance()->getWinSize();
1137 auto img = Sprite::create(
"Images/test_image_ai88_v3.pvr");
1141 img->setPosition(Vec2(s.width/2.0f, s.height/2.0f));
1145 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1150 return "PVR + AI88 Test";
1155 return "Testing PVR File Format v3";
1168 auto s = Director::getInstance()->getWinSize();
1170 auto img = Sprite::create(
"Images/test_image-bad_encoding.pvr");
1173 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
1180 return "PVR Unsupported encoding";
1185 return "You should not see any image";
1196 auto s = Director::getInstance()->getWinSize();
1198 auto img = Sprite::create(
"Images/grossini_128x256_mipmap.pvr");
1199 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
1201 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1206 return "PVR + Non square texture";
1211 return "Loading a 128x256 texture";
1222 auto s = Director::getInstance()->getWinSize();
1224 auto img = Sprite::create(
"Images/grossini_pvr_rgba4444.pvr");
1227 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
1230 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1235 return "PVR RGBA4 + NPOT texture";
1240 return "Loading a 81x121 RGBA4444 texture.";
1251 auto s = Director::getInstance()->getWinSize();
1253 auto img = Sprite::create(
"Images/grossini_pvr_rgba8888.pvr");
1256 img->setPosition(Vec2( s.width/2.0f, s.height/2.0f));
1259 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1264 return "PVR RGBA8 + NPOT texture";
1269 return "Loading a 81x121 RGBA8888 texture.";
1280 auto s = Director::getInstance()->getWinSize();
1287 auto sprite = Sprite::create(
"Images/grossinis_sister1.png");
1288 sprite->setPosition(Vec2( s.width/3.0f, s.height/2.0f));
1292 sprite->getTexture()->setAntiAliasTexParameters();
1298 auto sprite2 = Sprite::create(
"Images/grossinis_sister2.png");
1299 sprite2->setPosition(Vec2( 2*s.width/3.0f, s.height/2.0f));
1303 sprite2->getTexture()->setAliasTexParameters();
1306 auto sc = ScaleBy::create(3, 8.0f);
1307 auto sc_back = sc->reverse();
1308 auto scaleforever = RepeatForever::create(Sequence::create(sc, sc_back,
nullptr));
1309 auto scaleToo = scaleforever->clone();
1311 sprite2->runAction(scaleforever);
1312 sprite->runAction(scaleToo);
1313 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1318 return "AntiAlias / Alias textures";
1323 return "Left image is antialiased. Right image is aliases";
1342 auto s = Director::getInstance()->getWinSize();
1344 auto background = LayerColor::create(Color4B(128,128,128,255), s.width, s.height);
1345 addChild(background, -1);
1348 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8888);
1349 auto sprite1 = Sprite::create(
"Images/test-rgba1.png");
1350 sprite1->setPosition(Vec2(1*s.width/7, s.height/2+32));
1351 addChild(sprite1, 0);
1354 Director::getInstance()->getTextureCache()->removeTexture(sprite1->getTexture());
1357 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA4444);
1358 auto sprite2 = Sprite::create(
"Images/test-rgba1.png");
1359 sprite2->setPosition(Vec2(2*s.width/7, s.height/2-32));
1360 addChild(sprite2, 0);
1363 Director::getInstance()->getTextureCache()->removeTexture(sprite2->getTexture());
1366 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGB5A1);
1367 auto sprite3 = Sprite::create(
"Images/test-rgba1.png");
1368 sprite3->setPosition(Vec2(3*s.width/7, s.height/2+32));
1369 addChild(sprite3, 0);
1372 Director::getInstance()->getTextureCache()->removeTexture(sprite3->getTexture());
1375 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGB888);
1376 auto sprite4 = Sprite::create(
"Images/test-rgba1.png");
1377 sprite4->setPosition(Vec2(4*s.width/7, s.height/2-32));
1378 addChild(sprite4, 0);
1381 Director::getInstance()->getTextureCache()->removeTexture(sprite4->getTexture());
1384 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGB565);
1385 auto sprite5 = Sprite::create(
"Images/test-rgba1.png");
1386 sprite5->setPosition(Vec2(5*s.width/7, s.height/2+32));
1387 addChild(sprite5, 0);
1390 Director::getInstance()->getTextureCache()->removeTexture(sprite5->getTexture());
1393 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::A8);
1394 auto sprite6 = Sprite::create(
"Images/test-rgba1.png");
1395 sprite6->setPosition(Vec2(6*s.width/7, s.height/2-32));
1396 addChild(sprite6, 0);
1399 Director::getInstance()->getTextureCache()->removeTexture(sprite6->getTexture());
1401 auto fadeout = FadeOut::create(2);
1402 auto fadein = FadeIn::create(2);
1403 auto seq = Sequence::create(DelayTime::create(2), fadeout, fadein,
nullptr);
1404 auto seq_4ever = RepeatForever::create(seq);
1405 auto seq_4ever2 = seq_4ever->clone();
1406 auto seq_4ever3 = seq_4ever->clone();
1407 auto seq_4ever4 = seq_4ever->clone();
1408 auto seq_4ever5 = seq_4ever->clone();
1410 sprite1->runAction(seq_4ever);
1411 sprite2->runAction(seq_4ever2);
1412 sprite3->runAction(seq_4ever3);
1413 sprite4->runAction(seq_4ever4);
1414 sprite5->runAction(seq_4ever5);
1417 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::DEFAULT);
1418 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
1423 return "Texture Pixel Formats";
1428 return "Textures: RGBA8888, RGBA4444, RGB5A1, RGB888, RGB565, A8";
1440 for(
int i=0;i < 15;i++ )
1444 auto cloud = Sprite::create(
"Images/test_blend.png");
1445 addChild(cloud, i+1, 100+i);
1446 cloud->setPosition(Vec2(50+25*i, 80));
1447 cloud->setBlendFunc( BlendFunc::ALPHA_PREMULTIPLIED );
1451 cloud = Sprite::create(
"Images/test_blend.png");
1452 addChild(cloud, i+1, 200+i);
1453 cloud->setPosition(Vec2(50+25*i, 160));
1454 BlendFunc blendFunc2 = { backend::BlendFactor::ONE_MINUS_DST_COLOR, backend::BlendFactor::ZERO };
1455 cloud->setBlendFunc(blendFunc2);
1459 cloud = Sprite::create(
"Images/test_blend.png");
1460 addChild(cloud, i+1, 200+i);
1461 cloud->setPosition(Vec2(50+25*i, 320-80));
1462 BlendFunc blendFunc3 = { backend::BlendFactor::SRC_ALPHA, backend::BlendFactor::ONE };
1463 cloud->setBlendFunc(blendFunc3);
1469 return "Texture Blending";
1474 return "Testing 3 different blending modes";
1490 auto size = Director::getInstance()->getWinSize();
1492 auto label = Label::createWithTTF(
"Loading...",
"fonts/Marker Felt.ttf", 32);
1493 label->setPosition(Vec2( size.width/2, size.height/2));
1494 addChild(label, 10);
1496 auto scale = ScaleBy::create(0.3f, 2);
1497 auto scale_back = scale->reverse();
1498 auto seq = Sequence::create(scale, scale_back,
nullptr);
1499 label->runAction(RepeatForever::create(seq));
1506 auto textureCache = Director::getInstance()->getTextureCache();
1507 textureCache->unbindAllImageAsync();
1508 textureCache->removeAllTextures();
1513 auto textureCache = Director::getInstance()->getTextureCache();
1514 for(
int i=0;i < 8;i++) {
1515 for(
int j=0;j < 8; j++) {
1516 char szSpriteName[100] = {0};
1517 sprintf(szSpriteName,
"Images/sprites_test/sprite-%d-%d.png", i, j);
1532 auto director = Director::getInstance();
1540 auto sprite = Sprite::createWithTexture(texture);
1541 sprite->setAnchorPoint(Vec2(0,0));
1542 addChild(sprite, -1);
1544 auto size = director->getWinSize();
1546 sprite->setPosition(Vec2( i % (
int)size.width, (i / (
int)size.width) * 32 ));
1550 log(
"Image loaded: %p", texture);
1555 return "Texture Async Load";
1560 return "Textures should load while an animation is being run";
1573 auto size = Director::getInstance()->getWinSize();
1577 auto sprite = Sprite::create(
"Images/pattern1.png", Rect(0,0,512,256));
1579 sprite->setPosition(Vec2(size.width/2,size.height/2));
1580 Texture2D::TexParams texParams(
1581 backend::SamplerFilter::LINEAR,
1582 backend::SamplerFilter::LINEAR,
1583 backend::SamplerAddressMode::CLAMP_TO_EDGE,
1584 backend::SamplerAddressMode::CLAMP_TO_EDGE
1586 sprite->getTexture()->setTexParameters(texParams);
1587 auto rotate = RotateBy::create(4, 360);
1588 sprite->runAction(rotate);
1589 auto scale = ScaleBy::create(2, 0.04f);
1590 auto scaleBack = scale->reverse();
1591 auto seq = Sequence::create(scale, scaleBack,
nullptr);
1592 sprite->runAction(seq);
1597 return "Texture GL_CLAMP";
1602 Director::getInstance()->getTextureCache()->removeUnusedTextures();
1614 auto size = Director::getInstance()->getWinSize();
1618 auto sprite = Sprite::create(
"Images/pattern1.png", Rect(0, 0, 4096, 4096));
1620 sprite->setPosition(Vec2(size.width/2,size.height/2));
1621 Texture2D::TexParams descriptor = {
1622 backend::SamplerFilter::LINEAR,
1623 backend::SamplerFilter::LINEAR,
1624 backend::SamplerAddressMode::REPEAT,
1625 backend::SamplerAddressMode::REPEAT
1627 sprite->getTexture()->setTexParameters(descriptor);
1629 auto rotate = RotateBy::create(4, 360);
1630 sprite->runAction(rotate);
1631 auto scale = ScaleBy::create(2, 0.04f);
1632 auto scaleBack = scale->reverse();
1633 auto seq = Sequence::create(scale, scaleBack,
nullptr);
1634 sprite->runAction(seq);
1639 return "Texture GL_REPEAT";
1644 Director::getInstance()->getTextureCache()->removeUnusedTextures();
1655 Sprite *sprite =
nullptr;
1657 log(
"Loading 512x512 image...");
1658 sprite = Sprite::create(
"Images/texture512x512.png");
1664 log(
"Loading 1024x1024 image...");
1665 sprite = Sprite::create(
"Images/texture1024x1024.png");
1688 return "Different Texture Sizes";
1693 return "512x512, 1024x1024. See the console.";
1705 auto s = Director::getInstance()->getWinSize();
1709 sprite = Sprite::create(
"Images/grossinis_sister1.png");
1710 sprite->setPosition(Vec2(s.width/5*1, s.height/2));
1711 sprite->getTexture()->setAliasTexParameters();
1712 sprite->setScale(2);
1715 Director::getInstance()->getTextureCache()->removeTexture(sprite->getTexture());
1717 sprite = Sprite::create(
"Images/grossinis_sister1.png");
1718 sprite->setPosition(Vec2(s.width/5*2, s.height/2));
1719 sprite->getTexture()->setAntiAliasTexParameters();
1720 sprite->setScale(2);
1725 sprite = Sprite::create(
"Images/grossinis_sister2.png");
1726 sprite->setPosition(Vec2(s.width/5*3, s.height/2));
1727 sprite->getTexture()->setAliasTexParameters();
1728 sprite->setScale(2);
1731 Director::getInstance()->getTextureCache()->removeTextureForKey(
"Images/grossinis_sister2.png");
1733 sprite = Sprite::create(
"Images/grossinis_sister2.png");
1734 sprite->setPosition(Vec2(s.width/5*4, s.height/2));
1735 sprite->getTexture()->setAntiAliasTexParameters();
1736 sprite->setScale(2);
1742 return "CCTextureCache: remove";
1747 return "4 images should appear: alias, antialias, alias, antialias";
1755 _tex1 = Director::getInstance()->getTextureCache()->addImage(
"Images/grossinis_sister1.png");
1756 _Tex2F = Director::getInstance()->getTextureCache()->addImage(
"Images/grossinis_sister2.png");
1770 return "CCTexture2D: drawAtPoint";
1775 return "draws 2 textures using drawAtPoint";
1780 TextureDemo::draw(renderer, transform, flags);
1782 onDraw(transform, flags);
1787 Director* director = Director::getInstance();
1788 CCASSERT(
nullptr != director,
"Director is null when setting matrix stack");
1789 director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
1790 director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform);
1792 auto s = Director::getInstance()->getWinSize();
1794 _tex1->drawAtPoint(Vec2(s.width/2-50, s.height/2 - 50), _globalZOrder);
1795 _Tex2F->drawAtPoint(Vec2(s.width/2+50, s.height/2 - 50), _globalZOrder);
1797 director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
1805 _tex1 = Director::getInstance()->getTextureCache()->addImage(
"Images/grossinis_sister1.png");
1806 _Tex2F = Director::getInstance()->getTextureCache()->addImage(
"Images/grossinis_sister2.png");
1820 TextureDemo::draw(renderer, transform, flags);
1821 onDraw(transform, flags);
1826 Director* director = Director::getInstance();
1827 CCASSERT(
nullptr != director,
"Director is null when setting matrix stack");
1828 director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
1829 director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform);
1831 auto s = Director::getInstance()->getWinSize();
1833 auto rect1 = Rect( s.width/2 - 80, 20,
_tex1->getContentSize().width * 0.5f,
_tex1->getContentSize().height *2 );
1834 auto rect2 = Rect( s.width/2 + 80, s.height/2,
_tex1->getContentSize().width * 2,
_tex1->getContentSize().height * 0.5f );
1836 _tex1->drawInRect(rect1, _globalZOrder);
1837 _Tex2F->drawInRect(rect2, _globalZOrder);
1839 director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
1844 return "CCTexture2D: drawInRect";
1849 return "draws 2 textures using drawInRect";
1862 MenuItemFont::setFontSize(24);
1879 auto menu = Menu::create(item1, item2, item3, item4, item5,
nullptr);
1880 menu->alignItemsHorizontally();
1886 auto menu2 = Menu::create(warmup,
nullptr);
1888 menu2->alignItemsHorizontally();
1891 auto s = Director::getInstance()->getWinSize();
1893 menu2->setPosition(Vec2(s.width/2, s.height/4));
1911 Director::getInstance()->getTextureCache()->removeUnusedTextures();
1913 int tag = ((Node*)sender)->getTag();
1918 file =
"Images/test_image.png";
1921 file =
"Images/test_image_rgba8888.pvr";
1924 file =
"Images/test_image_rgb888.pvr";
1927 file =
"Images/test_image_rgba4444.pvr";
1930 file =
"Images/test_image_a8.pvr";
1939 auto s = Director::getInstance()->getWinSize();
1940 _background->setPosition(Vec2(s.width/2, s.height/2));
1945 return "Texture memory";
1950 return "Testing Texture Memory allocation. Use Instruments + VM Tracker";
1956 auto size = Director::getInstance()->getWinSize();
1958 auto background = LayerColor::create(Color4B(128,128,128,255), size.width, size.height);
1959 addChild(background, -1);
1963 auto pvr1 = Sprite::create(
"Images/grossinis_sister1-testalpha_premult.pvr");
1965 pvr1->setPosition(Vec2(size.width/4*1, size.height/2));
1969 auto pvr2 = Sprite::create(
"Images/grossinis_sister1-testalpha_nopremult.pvr");
1971 pvr2->setPosition(Vec2(size.width/4*2, size.height/2));
1975 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8888);
1976 Director::getInstance()->getTextureCache()->removeTextureForKey(
"Images/grossinis_sister1-testalpha.png");
1977 auto png = Sprite::create(
"Images/grossinis_sister1-testalpha.png");
1979 png->setPosition(Vec2(size.width/4*3, size.height/2));
1985 return "PVRv3 Premult Flag";
1990 return "All images should look exactly the same";
1995 auto fade = FadeOut::create(2);
1996 auto dl = DelayTime::create(2);
1997 auto fadein = fade->reverse();
1998 auto seq = Sequence::create(fade, fadein, dl,
nullptr);
1999 auto repeat = RepeatForever::create(seq);
2000 sprite->runAction(repeat);
2006 auto sprite = Sprite::create(
"Images/ETC1.pkm");
2008 auto size = Director::getInstance()->getWinSize();
2009 sprite->setPosition(Vec2(size.width/2, size.height/2));
2016 return "ETC1 texture";
2021 bool isSupportETCHardwareDecode = Configuration::getInstance()->supportsETC();
2022 Application::Platform platform = Application::getInstance()->getTargetPlatform();
2025 static std::unordered_map<int, const char*> platformMap = {
2026 {(int)Application::Platform::OS_WINDOWS,
"Windows"},
2027 {(int)Application::Platform::OS_LINUX,
"Linux"},
2028 {(int)Application::Platform::OS_MAC,
"macOS"},
2029 {(int)Application::Platform::OS_ANDROID,
"Android"},
2030 {(int)Application::Platform::OS_IPHONE,
"iPhone"},
2031 {(int)Application::Platform::OS_IPAD,
"iPad"},
2034 if (isSupportETCHardwareDecode)
2036 ret +=
"Hardware decode ETC1 on ";
2041 ret +=
"Software decode ETC1 on ";
2044 auto iter = platformMap.find((
int)platform);
2045 if (iter != platformMap.end())
2047 ret += iter->second;
2051 ret +=
"Unknown Platform";
2060 auto sprite = Sprite::create(
"Images/test_256x256_s3tc_dxt1_mipmaps.dds");
2062 auto size = Director::getInstance()->getWinSize();
2063 sprite->setPosition(Vec2(size.width / 2, size.height / 2));
2069 return "S3TC texture test#1";
2073 return "S3TC dxt1 decode,one bit for Alpha";
2079 auto sprite = Sprite::create(
"Images/test_256x256_s3tc_dxt3_mipmaps.dds");
2081 auto size = Director::getInstance()->getWinSize();
2082 sprite->setPosition(Vec2(size.width / 2, size.height / 2));
2088 return "S3TC texture test#2";
2092 return "S3TC dxt3 decode";
2098 auto sprite = Sprite::create(
"Images/test_256x256_s3tc_dxt5_mipmaps.dds");
2100 auto size = Director::getInstance()->getWinSize();
2101 sprite->setPosition(Vec2(size.width / 2, size.height / 2));
2107 return "S3TC texture test#3";
2111 return "S3TC dxt5 decode";
2117 auto sprite = Sprite::create(
"Images/test_512x512_s3tc_dxt5_with_no_mipmaps.dds");
2118 auto size = Director::getInstance()->getWinSize();
2119 sprite->setPosition(Vec2(size.width / 2, size.height / 2));
2125 return "S3TC with no mipmaps";
2131 auto sprite = Sprite::create(
"Images/test_256x256_ATC_RGB_mipmaps.ktx");
2133 auto size = Director::getInstance()->getWinSize();
2134 sprite->setPosition(Vec2(size.width / 2, size.height / 2));
2140 return "ATITC texture (*.ktx file) test#1";
2144 return "ATITC RGB (no Alpha channel) compressed texture test";
2149 auto sprite = Sprite::create(
"Images/test_256x256_ATC_RGBA_Explicit_mipmaps.ktx");
2151 auto size = Director::getInstance()->getWinSize();
2152 sprite->setPosition(Vec2(size.width / 2, size.height / 2));
2158 return "ATITC texture (*.ktx file) test#2";
2162 return "ATITC RGBA explicit Alpha compressed texture test";
2167 auto sprite = Sprite::create(
"Images/test_256x256_ATC_RGBA_Interpolated_mipmaps.ktx");
2169 auto size = Director::getInstance()->getWinSize();
2170 sprite->setPosition(Vec2(size.width / 2, size.height /2));
2176 return "ATITC texture (*.ktx file) test#3";
2180 return "ATITC RGBA Interpolated Alpha compressed texture test";
2185 Texture2D::setDefaultAlphaPixelFormat(format);
2186 auto sprite = Sprite::create(path);
2187 sprite->setPosition(Vec2(x, y));
2188 demo.addChild(sprite, 0);
2191 Director::getInstance()->getTextureCache()->removeTexture(sprite->getTexture());
2199 auto s = Director::getInstance()->getWinSize();
2201 auto background = LayerColor::create(Color4B(255,0,0,255), s.width, s.height);
2202 addChild(background, -1);
2204 const char* img =
"Images/test_image_rgb888.png";
2205 addImageToDemo(*
this, 1*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA8888);
2206 addImageToDemo(*
this, 2*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB888);
2207 addImageToDemo(*
this, 3*s.width/9, s.height/2+32, img, backend::PixelFormat::RGB565);
2208 addImageToDemo(*
this, 4*s.width/9, s.height/2-32, img, backend::PixelFormat::A8);
2209 addImageToDemo(*
this, 5*s.width/9, s.height/2+32, img, backend::PixelFormat::I8);
2210 addImageToDemo(*
this, 6*s.width/9, s.height/2-32, img, backend::PixelFormat::AI88);
2211 addImageToDemo(*
this, 7*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA4444);
2212 addImageToDemo(*
this, 8*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB5A1);
2215 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::DEFAULT);
2216 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
2221 return "RGB888 convert test";
2226 return "RGBA8888,RGB888,RGB565,A8,I8,AI88,RGBA4444,RGB5A1";
2233 auto s = Director::getInstance()->getWinSize();
2235 auto background = LayerColor::create(Color4B(255,0,0,255), s.width, s.height);
2236 addChild(background, -1);
2238 const char* img =
"Images/test_image_rgba8888.png";
2239 addImageToDemo(*
this, 1*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA8888);
2240 addImageToDemo(*
this, 2*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB888);
2241 addImageToDemo(*
this, 3*s.width/9, s.height/2+32, img, backend::PixelFormat::RGB565);
2242 addImageToDemo(*
this, 4*s.width/9, s.height/2-32, img, backend::PixelFormat::A8);
2243 addImageToDemo(*
this, 5*s.width/9, s.height/2+32, img, backend::PixelFormat::I8);
2244 addImageToDemo(*
this, 6*s.width/9, s.height/2-32, img, backend::PixelFormat::AI88);
2245 addImageToDemo(*
this, 7*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA4444);
2246 addImageToDemo(*
this, 8*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB5A1);
2249 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::DEFAULT);
2250 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
2255 return "RGBA8888 convert test";
2260 return "RGBA8888,RGB888,RGB565,A8,I8,AI88,RGBA4444,RGB5A1";
2267 auto s = Director::getInstance()->getWinSize();
2269 auto background = LayerColor::create(Color4B(255,0,0,255), s.width, s.height);
2270 addChild(background, -1);
2272 const char* img =
"Images/test_image_i8.png";
2273 addImageToDemo(*
this, 1*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA8888);
2274 addImageToDemo(*
this, 2*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB888);
2275 addImageToDemo(*
this, 3*s.width/9, s.height/2+32, img, backend::PixelFormat::RGB565);
2276 addImageToDemo(*
this, 4*s.width/9, s.height/2-32, img, backend::PixelFormat::A8);
2277 addImageToDemo(*
this, 5*s.width/9, s.height/2+32, img, backend::PixelFormat::I8);
2278 addImageToDemo(*
this, 6*s.width/9, s.height/2-32, img, backend::PixelFormat::AI88);
2279 addImageToDemo(*
this, 7*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA4444);
2280 addImageToDemo(*
this, 8*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB5A1);
2283 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::DEFAULT);
2284 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
2289 return "I8 convert test";
2294 return "RGBA8888,RGB888,RGB565,A8,I8,AI88,RGBA4444,RGB5A1";
2301 auto s = Director::getInstance()->getWinSize();
2303 auto background = LayerColor::create(Color4B(255,0,0,255), s.width, s.height);
2304 addChild(background, -1);
2306 const char* img =
"Images/test_image_ai88.png";
2307 addImageToDemo(*
this, 1*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA8888);
2308 addImageToDemo(*
this, 2*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB888);
2309 addImageToDemo(*
this, 3*s.width/9, s.height/2+32, img, backend::PixelFormat::RGB565);
2310 addImageToDemo(*
this, 4*s.width/9, s.height/2-32, img, backend::PixelFormat::A8);
2311 addImageToDemo(*
this, 5*s.width/9, s.height/2+32, img, backend::PixelFormat::I8);
2312 addImageToDemo(*
this, 6*s.width/9, s.height/2-32, img, backend::PixelFormat::AI88);
2313 addImageToDemo(*
this, 7*s.width/9, s.height/2+32, img, backend::PixelFormat::RGBA4444);
2314 addImageToDemo(*
this, 8*s.width/9, s.height/2-32, img, backend::PixelFormat::RGB5A1);
2317 Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::DEFAULT);
2318 log(
"%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
2323 return "AI88 convert test";
2328 return "RGBA8888,RGB888,RGB565,A8,I8,AI88,RGBA4444,RGB5A1";
#define ADD_TEST_CASE(__className__)
static void addImageToDemo(TextureDemo &demo, float x, float y, const char *path, backend::PixelFormat format)
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
TextureATITCInterpolated()
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
void imageLoaded(cocos2d::Texture2D *texture)
virtual void onEnter() override
virtual std::string subtitle() const override
void loadImages(float dt)
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
void onDraw(const cocos2d::Mat4 &transform, uint32_t flags)
virtual void onEnter() override
cocos2d::Texture2D * _tex1
virtual std::string title() const override
virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags) override
cocos2d::Texture2D * _Tex2F
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
cocos2d::Texture2D * _Tex2F
virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags) override
virtual std::string subtitle() const override
cocos2d::Texture2D * _tex1
void onDraw(const cocos2d::Mat4 &transform, uint32_t flags)
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual ~TextureGlClamp()
virtual std::string title() const override
virtual ~TextureGlRepeat()
virtual std::string title() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
cocos2d::Sprite * _background
void updateImage(cocos2d::Ref *sender)
void changeBackgroundVisible(cocos2d::Ref *sender)
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
virtual void onEnter() override
virtual std::string title() const override
void transformSprite(cocos2d::Sprite *sprite)
virtual std::string subtitle() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
TextureS3TCWithNoMipmaps()
virtual std::string title() const override
virtual std::string subtitle() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override
virtual std::string title() const override
virtual void onEnter() override
virtual void onEnter() override
virtual std::string title() const override