axmol/tests/cpp-tests/Classes/PerformanceTest/PerformanceTextureTest.cpp

364 lines
9.5 KiB
C++
Raw Normal View History

#include "PerformanceTextureTest.h"
enum
{
TEST_COUNT = 1,
};
static int s_nTexCurCase = 0;
float calculateDeltaTime( struct timeval *lastUpdate )
{
struct timeval now;
gettimeofday( &now, nullptr);
float dt = (now.tv_sec - lastUpdate->tv_sec) + (now.tv_usec - lastUpdate->tv_usec) / 1000000.0f;
return dt;
}
////////////////////////////////////////////////////////
//
// TextureMenuLayer
//
////////////////////////////////////////////////////////
void TextureMenuLayer::showCurrentTest()
{
Scene* scene = nullptr;
switch (_curCase)
{
case 0:
scene = TextureTest::scene();
break;
}
s_nTexCurCase = _curCase;
if (scene)
{
Director::getInstance()->replaceScene(scene);
}
}
void TextureMenuLayer::onEnter()
{
PerformBasicLayer::onEnter();
auto s = Director::getInstance()->getWinSize();
// Title
auto label = Label::createWithTTF(title().c_str(), "fonts/arial.ttf", 32);
addChild(label, 1);
Squashed commit of the following: commit a9572b8913f3a38b59adbd7b4017ab9848a6b2b5 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed May 14 10:03:44 2014 -0700 math renames `Vector2` -> `Vec2` `Vector3` -> `Vec3` `Vector4` -> `Vec4` `Matrix` -> `Mat4` commit 4e107f4bd854c26bfceb52b063d6bd9cea02d6a3 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 09:24:28 2014 -0700 raw version of rename Vector3 commit 1d115573ebe96a5fc815fa44fbe6417ea7dba841 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 09:07:14 2014 -0700 rename Vector2 after merge commit ab2ed58c129dbc30a4c0970ed94568c5d271657b Merge: 1978d2d 86fb75a Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 09:05:30 2014 -0700 Merge branch 'v3' into v3_renameMathClassName Conflicts: tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp commit 1978d2d174877172ccddc083020a1bbf43ad3b39 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 08:51:45 2014 -0700 rename vector2 in tests/cpp-empty-test folder commit d4e0ff13dcce62724d2fece656543f26aa28e467 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:58:23 2014 -0700 rename vector2 in tests/cpp-tests cpp files commit be50ca2ec75e0fd32a6fcdaa15fe1ebb4cafe79f Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:52:57 2014 -0700 rename vector2 in tests/cpp-tests head files commit 6daef564400d4e28c4ce20859a68e0f583fed125 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:49:48 2014 -0700 rename vector2 in extension folder commit 8f3f0f65ceea92c9e7a0d87ab54e62220c5572e2 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:47:22 2014 -0700 rename vector2 in cocos/2d cpp files commit e1f3105aae06d595661a3030f519f7cc13aefbed Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:44:39 2014 -0700 rename vector2 in cocos/2d head files commit 6708d890bfe486109120c3cd4b9fe5c078b7108f Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:40:59 2014 -0700 rename vector2 in cocos/base folder commit d3978fa5447c31ea2f3ece5469b7e746dfba4248 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:40:43 2014 -0700 rename vector2 in cocos/deprecated folder commit 4bff45139363d6b9706edbbcf9f322d48b4fd019 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:40:26 2014 -0700 rename vector2 in cocos/editor-support folder commit 353d244c995f8b5d14f635c52aed8bc5e5fc1a6f Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:36:48 2014 -0700 rename vector2 in cocos/ui folder commit 758b8f4d513084b9922d7242e9b8f2c7f316de6c Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:32:39 2014 -0700 rename vector2 in cocos/renderer folder commit 0bd2710dd8714cecb993880bc37affd9ecb05c27 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:32:15 2014 -0700 rename vector2 in cocos/physics folder commit b7f0581c4587348bdbc1478d5374c2325735f21d Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:25:01 2014 -0700 rename vector2 in cocos/math folder commit a8631a8e1a4e2740807ccd9be9d70de6ecaad7dd Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:16:55 2014 -0700 rename Vector2 to Vec2 deprecate typedef Vector2
2014-05-15 01:07:09 +08:00
label->setPosition(Vec2(s.width/2, s.height-50));
// Subtitle
std::string strSubTitle = subtitle();
if(strSubTitle.length())
{
auto l = Label::createWithTTF(strSubTitle.c_str(), "fonts/Thonburi.ttf", 16);
addChild(l, 1);
Squashed commit of the following: commit a9572b8913f3a38b59adbd7b4017ab9848a6b2b5 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed May 14 10:03:44 2014 -0700 math renames `Vector2` -> `Vec2` `Vector3` -> `Vec3` `Vector4` -> `Vec4` `Matrix` -> `Mat4` commit 4e107f4bd854c26bfceb52b063d6bd9cea02d6a3 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 09:24:28 2014 -0700 raw version of rename Vector3 commit 1d115573ebe96a5fc815fa44fbe6417ea7dba841 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 09:07:14 2014 -0700 rename Vector2 after merge commit ab2ed58c129dbc30a4c0970ed94568c5d271657b Merge: 1978d2d 86fb75a Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 09:05:30 2014 -0700 Merge branch 'v3' into v3_renameMathClassName Conflicts: tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.cpp tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp commit 1978d2d174877172ccddc083020a1bbf43ad3b39 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 08:51:45 2014 -0700 rename vector2 in tests/cpp-empty-test folder commit d4e0ff13dcce62724d2fece656543f26aa28e467 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:58:23 2014 -0700 rename vector2 in tests/cpp-tests cpp files commit be50ca2ec75e0fd32a6fcdaa15fe1ebb4cafe79f Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:52:57 2014 -0700 rename vector2 in tests/cpp-tests head files commit 6daef564400d4e28c4ce20859a68e0f583fed125 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:49:48 2014 -0700 rename vector2 in extension folder commit 8f3f0f65ceea92c9e7a0d87ab54e62220c5572e2 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:47:22 2014 -0700 rename vector2 in cocos/2d cpp files commit e1f3105aae06d595661a3030f519f7cc13aefbed Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:44:39 2014 -0700 rename vector2 in cocos/2d head files commit 6708d890bfe486109120c3cd4b9fe5c078b7108f Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:40:59 2014 -0700 rename vector2 in cocos/base folder commit d3978fa5447c31ea2f3ece5469b7e746dfba4248 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:40:43 2014 -0700 rename vector2 in cocos/deprecated folder commit 4bff45139363d6b9706edbbcf9f322d48b4fd019 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:40:26 2014 -0700 rename vector2 in cocos/editor-support folder commit 353d244c995f8b5d14f635c52aed8bc5e5fc1a6f Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:36:48 2014 -0700 rename vector2 in cocos/ui folder commit 758b8f4d513084b9922d7242e9b8f2c7f316de6c Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:32:39 2014 -0700 rename vector2 in cocos/renderer folder commit 0bd2710dd8714cecb993880bc37affd9ecb05c27 Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:32:15 2014 -0700 rename vector2 in cocos/physics folder commit b7f0581c4587348bdbc1478d5374c2325735f21d Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:25:01 2014 -0700 rename vector2 in cocos/math folder commit a8631a8e1a4e2740807ccd9be9d70de6ecaad7dd Author: Huabing.Xu <dabingnn@gmail.com> Date: Wed May 14 00:16:55 2014 -0700 rename Vector2 to Vec2 deprecate typedef Vector2
2014-05-15 01:07:09 +08:00
l->setPosition(Vec2(s.width/2, s.height-80));
}
performTests();
}
std::string TextureMenuLayer::title() const
{
return "no title";
}
std::string TextureMenuLayer::subtitle() const
{
return "no subtitle";
}
////////////////////////////////////////////////////////
//
// TextureTest
//
////////////////////////////////////////////////////////
void TextureTest::performTestsPNG(const char* filename)
{
struct timeval now;
Texture2D *texture;
auto cache = Director::getInstance()->getTextureCache();
Texture2D::PixelFormat defaultFormat = Texture2D::getDefaultAlphaPixelFormat();
log("RGBA 8888");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
log("RGBA 4444");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
log("RGBA 5551");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB5A1);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
log("RGB 565");
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB565);
gettimeofday(&now, nullptr);
texture = cache->addImage(filename);
if( texture )
log(" ms:%f", calculateDeltaTime(&now) );
else
log(" ERROR");
cache->removeTexture(texture);
Texture2D::setDefaultAlphaPixelFormat(defaultFormat);
}
void TextureTest::performTests()
{
// Texture2D *texture;
// struct timeval now;
// auto cache = Director::getInstance()->getTextureCache();
log("--------");
log("--- PNG 128x128 ---");
performTestsPNG("Images/test_image.png");
// log("--- PVR 128x128 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_rgba8888.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("BGRA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_bgra8888.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("RGB 565");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/test_image_rgb565.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
log("--- PNG 512x512 ---");
performTestsPNG("Images/texture512x512.png");
// log("--- PVR 512x512 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture512x512_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// ---- 1024X1024
// RGBA4444
// Empty image
//
log("EMPTY IMAGE");
log("--- PNG 1024x1024 ---");
performTestsPNG("Images/texture1024x1024.png");
// log("--- PVR 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.GZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr.gz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.CCZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr.ccz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// ---- 1024X1024
// RGBA4444
// SpriteSheet images
//
log("SPRITESHEET IMAGE");
log("--- PNG 1024x1024 ---");
performTestsPNG("Images/PlanetCute-1024x1024.png");
// log("--- PVR 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.GZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr.gz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.CCZ 1024x1024 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr.ccz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// ---- 1024X1024
// RGBA8888
// Landscape Image
//
log("LANDSCAPE IMAGE");
log("--- PNG 1024x1024 ---");
performTestsPNG("Images/landscape-1024x1024.png");
// log("--- PVR 1024x1024 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.GZ 1024x1024 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr.gz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// log("--- PVR.CCZ 1024x1024 ---");
// log("RGBA 8888");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr.ccz");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
//
// 2048x2048
// RGBA444
//
// most platform don't support texture with width/height is 2048
// log("--- PNG 2048x2048 ---");
// performTestsPNG("Images/texture2048x2048.png");
// log("--- PVR 2048x2048 ---");
// log("RGBA 4444");
// gettimeofday(&now, nullptr);
// texture = cache->addImage("Images/texture2048x2048_rgba4444.pvr");
// if( texture )
// log(" ms:%f", calculateDeltaTime(&now) );
// else
// log("ERROR");
// cache->removeTexture(texture);
}
std::string TextureTest::title() const
{
return "Texture Performance Test";
}
std::string TextureTest::subtitle() const
{
return "See console for results";
}
Scene* TextureTest::scene()
{
auto scene = Scene::create();
TextureTest *layer = new TextureTest(false, TEST_COUNT, s_nTexCurCase);
scene->addChild(layer);
layer->release();
return scene;
}
void runTextureTest()
{
s_nTexCurCase = 0;
auto scene = TextureTest::scene();
Director::getInstance()->replaceScene(scene);
}