diff --git a/cocos2dx/textures/CCTexture2D.cpp b/cocos2dx/textures/CCTexture2D.cpp
index 866eafb3d1..76d5b130cb 100644
--- a/cocos2dx/textures/CCTexture2D.cpp
+++ b/cocos2dx/textures/CCTexture2D.cpp
@@ -186,7 +186,7 @@ bool CCTexture2D::initWithData(const void *data, CCTexture2DPixelFormat pixelFor
case kCCTexture2DPixelFormat_A8:
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, (GLsizei)pixelsWide, (GLsizei)pixelsHigh, 0, GL_ALPHA, GL_UNSIGNED_BYTE, data);
break;
- default:;
+ default:
CCAssert(0, "NSInternalInconsistencyException");
}
@@ -566,16 +566,14 @@ bool CCTexture2D::initWithPVRFile(const char* file)
m_ePixelFormat = pvr->getFormat();
this->setAntiAliasTexParameters();
+ pvr->release();
}
else
{
CCLOG("cocos2d: Couldn't load PVR image %s", file);
}
-
- pvr->release();
return bRet;
-
}
void CCTexture2D::setPVRImagesHavePremultipliedAlpha(bool haveAlphaPremultiplied)
@@ -669,6 +667,9 @@ unsigned int CCTexture2D::bitsPerPixelForFormat()
case kCCTexture2DPixelFormat_AI88:
ret = 16;
break;
+ case kCCTexture2DPixelFormat_RGB888:
+ ret = 24;
+ break;
default:
ret = -1;
assert(false);
diff --git a/cocos2dx/textures/CCTexturePVR.cpp b/cocos2dx/textures/CCTexturePVR.cpp
index c49576cd0b..fdc4d1aa4b 100755
--- a/cocos2dx/textures/CCTexturePVR.cpp
+++ b/cocos2dx/textures/CCTexturePVR.cpp
@@ -476,7 +476,7 @@ bool CCTexturePVR::initWithContentsOfFile(const char* path)
}
else
{
- pvrdata = CCFileUtils::getFileData(path, "r", (unsigned long *)(&pvrlen));
+ pvrdata = CCFileUtils::getFileData(path, "rb", (unsigned long *)(&pvrlen));
}
if (pvrlen < 0)
@@ -495,12 +495,12 @@ bool CCTexturePVR::initWithContentsOfFile(const char* path)
if ( !unpackPVRData(pvrdata, pvrlen) || !createGLTexture() )
{
- free(pvrdata);
+ delete [] pvrdata;
this->release();
return false;
}
- free(pvrdata);
+ delete [] pvrdata;
return true;
}
diff --git a/tests/test.airplay/test.mkb b/tests/test.airplay/test.mkb
index e0902edf9a..15f85b1567 100644
--- a/tests/test.airplay/test.mkb
+++ b/tests/test.airplay/test.mkb
@@ -191,6 +191,11 @@ files
"*.h"
"*.cpp"
+ [Tests/Texture2dTest]
+ ("../tests/Texture2dTest")
+ "*.h"
+ "*.cpp"
+
[Tests/TileMapTest]
("../tests/TileMapTest")
"*.h"
diff --git a/tests/test.android/jni/tests/Android.mk b/tests/test.android/jni/tests/Android.mk
index 21fb9b937e..bf479f6e22 100644
--- a/tests/test.android/jni/tests/Android.mk
+++ b/tests/test.android/jni/tests/Android.mk
@@ -74,6 +74,7 @@ LOCAL_SRC_FILES := main.cpp \
../../../tests/SceneTest/SceneTest.cpp \
../../../tests/SchedulerTest/SchedulerTest.cpp \
../../../tests/SpriteTest/SpriteTest.cpp \
+../../../tests/Texture2dTest/Texture2dTest.cpp \
../../../tests/TileMapTest/TileMapTest.cpp \
../../../tests/TouchesTest/Ball.cpp \
../../../tests/TouchesTest/Paddle.cpp \
diff --git a/tests/test.ios/test.xcodeproj/project.pbxproj.REMOVED.git-id b/tests/test.ios/test.xcodeproj/project.pbxproj.REMOVED.git-id
index e4b8848517..f541ab771d 100644
--- a/tests/test.ios/test.xcodeproj/project.pbxproj.REMOVED.git-id
+++ b/tests/test.ios/test.xcodeproj/project.pbxproj.REMOVED.git-id
@@ -1 +1 @@
-ee629ad852ffaadaaf47f1d39c96f7daf670f9be
\ No newline at end of file
+898c0f4be35b091c881554d3a75aafca0788707a
\ No newline at end of file
diff --git a/tests/test.win32/test.win32.vcproj b/tests/test.win32/test.win32.vcproj
index 2d60e947b3..c2d9254a5d 100644
--- a/tests/test.win32/test.win32.vcproj
+++ b/tests/test.win32/test.win32.vcproj
@@ -1071,6 +1071,18 @@
+
+
+
+
+
+
diff --git a/tests/test.wophone/Makefile.ARM b/tests/test.wophone/Makefile.ARM
index 24ea05b856..d5a9bc59aa 100644
--- a/tests/test.wophone/Makefile.ARM
+++ b/tests/test.wophone/Makefile.ARM
@@ -112,6 +112,7 @@ OBJECTS = \
$(OBJECTS_DIR)/SchedulerTest.o \
$(OBJECTS_DIR)/SpriteTest.o \
$(OBJECTS_DIR)/TextInputTest.o \
+ $(OBJECTS_DIR)/Texture2dTest.o \
$(OBJECTS_DIR)/TileMapTest.o \
$(OBJECTS_DIR)/Ball.o \
$(OBJECTS_DIR)/Paddle.o \
@@ -365,6 +366,9 @@ $(OBJECTS_DIR)/SpriteTest.o : ../tests/SpriteTest/SpriteTest.cpp
$(OBJECTS_DIR)/TextInputTest.o : ../tests/TextInputTest/TextInputTest.cpp
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/TextInputTest.o ../tests/TextInputTest/TextInputTest.cpp
+$(OBJECTS_DIR)/Texture2dTest.o : ../tests/Texture2dTest/Texture2dTest.cpp
+ $(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/Texture2dTest.o ../tests/Texture2dTest/Texture2dTest.cpp
+
$(OBJECTS_DIR)/TileMapTest.o : ../tests/TileMapTest/TileMapTest.cpp
$(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/TileMapTest.o ../tests/TileMapTest/TileMapTest.cpp
diff --git a/tests/test.wophone/test.wophone.vcproj b/tests/test.wophone/test.wophone.vcproj
index 231ece1337..fa2cfac2fd 100644
--- a/tests/test.wophone/test.wophone.vcproj
+++ b/tests/test.wophone/test.wophone.vcproj
@@ -1078,6 +1078,18 @@
>
+
+
+
+
+
+
autorelease();
+ }
+
+ return pLayer;
+}
+
+CCLayer* nextTextureTest();
+CCLayer* backTextureTest();
+CCLayer* restartTextureTest();
+
+CCLayer* nextTextureTest()
+{
+ sceneIdx++;
+ sceneIdx = sceneIdx % TEST_CASE_COUNT;
+
+ return createTextureTest(sceneIdx);
+}
+
+CCLayer* backTextureTest()
+{
+ sceneIdx--;
+ if( sceneIdx < 0 )
+ sceneIdx = TEST_CASE_COUNT -1;
+
+ return createTextureTest(sceneIdx);
+}
+
+CCLayer* restartTextureTest()
+{
+ return createTextureTest(sceneIdx);
+}
+
+//------------------------------------------------------------------
+//
+// TextureDemo
+//
+//------------------------------------------------------------------
+void TextureDemo::onEnter()
+{
+ CCLayer::onEnter();
+
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+ CCLabelTTF *label = CCLabelTTF::labelWithString(title().c_str(), "Arial", 26);
+ addChild(label, 1, kTagLabel);
+ label->setPosition(ccp(s.width/2, s.height-50));
+
+ std::string strSubtitle = subtitle();
+ if(strSubtitle.length())
+ {
+ CCLabelTTF *l = CCLabelTTF::labelWithString(strSubtitle.c_str(), "Thonburi", 16);
+ addChild(l, 1);
+ l->setPosition(ccp(s.width/2, s.height-80));
+ }
+
+ CCMenuItemImage *item1 = CCMenuItemImage::itemFromNormalImage(s_pPathB1, s_pPathB2, this, menu_selector(TextureDemo::backCallback) );
+ CCMenuItemImage *item2 = CCMenuItemImage::itemFromNormalImage(s_pPathR1, s_pPathR2, this, menu_selector(TextureDemo::restartCallback) );
+ CCMenuItemImage *item3 = CCMenuItemImage::itemFromNormalImage(s_pPathF1, s_pPathF2, this, menu_selector(TextureDemo::nextCallback) );
+
+ CCMenu *menu = CCMenu::menuWithItems(item1, item2, item3, NULL);
+ menu->setPosition(CCPointZero);
+ item1->setPosition(ccp( s.width/2 - 100,30));
+ item2->setPosition(ccp( s.width/2, 30));
+ item3->setPosition(ccp( s.width/2 + 100,30));
+ addChild(menu, 1);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+TextureDemo::~TextureDemo()
+{
+ CCTextureCache::sharedTextureCache()->removeUnusedTextures();
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+void TextureDemo::restartCallback(CCObject* pSender)
+{
+ CCScene *s = new TextureTestScene();
+ s->addChild(restartTextureTest());
+ CCDirector::sharedDirector()->replaceScene(s);
+ s->autorelease();
+}
+
+void TextureDemo::nextCallback(CCObject* pSender)
+{
+ CCScene *s = new TextureTestScene();
+ s->addChild(nextTextureTest());
+ CCDirector::sharedDirector()->replaceScene(s);
+ s->autorelease();
+}
+
+void TextureDemo::backCallback(CCObject* pSender)
+{
+ CCScene *s = new TextureTestScene();
+ s->addChild(backTextureTest());
+ CCDirector::sharedDirector()->replaceScene(s);
+ s->autorelease();
+}
+
+std::string TextureDemo::title()
+{
+ return "No title";
+}
+
+std::string TextureDemo::subtitle()
+{
+ return "";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePNG
+//
+//------------------------------------------------------------------
+void TexturePNG::onEnter()
+{
+ TextureDemo::onEnter();
+
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image.png");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePNG::title()
+{
+ return "PNG Test";
+}
+
+//------------------------------------------------------------------
+//
+// TextureJPEG
+//
+//------------------------------------------------------------------
+void TextureJPEG::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image.jpeg");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TextureJPEG::title()
+{
+ return "JPEG Test";
+}
+
+//------------------------------------------------------------------
+//
+// TextureMipMap
+//
+//------------------------------------------------------------------
+void TextureMipMap::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCTexture2D *texture0 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas.png");
+ texture0->generateMipmap();
+ ccTexParams texParams = { GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE };
+ texture0->setTexParameters(&texParams);
+
+ CCTexture2D *texture1 = CCTextureCache::sharedTextureCache()->addImage("Images/grossini_dance_atlas_nomipmap.png");
+
+ CCSprite *img0 = CCSprite::spriteWithTexture(texture0);
+ img0->setTextureRect(CCRectMake(85, 121, 85, 121));
+ img0->setPosition(ccp( s.width/3.0f, s.height/2.0f));
+ addChild(img0);
+
+ CCSprite *img1 = CCSprite::spriteWithTexture(texture1);
+ img1->setTextureRect(CCRectMake(85, 121, 85, 121));
+ img1->setPosition(ccp( 2*s.width/3.0f, s.height/2.0f));
+ addChild(img1);
+
+
+ CCEaseOut* scale1 = CCEaseOut::actionWithAction(CCScaleBy::actionWithDuration(4, 0.01f), 3);
+ CCActionInterval* sc_back = scale1->reverse();
+
+ CCEaseOut* scale2 = (CCEaseOut*) (scale1->copy());
+ scale2->autorelease();
+ CCActionInterval* sc_back2 = scale2->reverse();
+
+ img0->runAction(CCRepeatForever::actionWithAction((CCActionInterval*)(CCSequence::actions(scale1, sc_back, NULL))));
+ img1->runAction(CCRepeatForever::actionWithAction((CCActionInterval*)(CCSequence::actions(scale2, sc_back2, NULL))));
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TextureMipMap::title()
+{
+ return "Texture Mipmap";
+}
+
+std::string TextureMipMap::subtitle()
+{
+ return "Left image uses mipmap. Right image doesn't";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRMipMap
+// To generate PVR images read this article:
+// http://developer.apple.com/iphone/library/qa/qa2008/qa1611.html
+//
+//------------------------------------------------------------------
+void TexturePVRMipMap::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *imgMipMap = CCSprite::spriteWithFile("Images/logo-mipmap.pvr");
+ if( imgMipMap )
+ {
+ imgMipMap->setPosition(ccp( s.width/2.0f-100, s.height/2.0f));
+ addChild(imgMipMap);
+
+ // support mipmap filtering
+ ccTexParams texParams = { GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE };
+ imgMipMap->getTexture()->setTexParameters(&texParams);
+ }
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/logo-nomipmap.pvr");
+ if( img )
+ {
+ img->setPosition(ccp( s.width/2.0f+100, s.height/2.0f));
+ addChild(img);
+
+ CCEaseOut* scale1 = CCEaseOut::actionWithAction(CCScaleBy::actionWithDuration(4, 0.01f), 3);
+ CCActionInterval* sc_back = scale1->reverse();
+
+ CCEaseOut* scale2 = (CCEaseOut*) (scale1->copy());
+ scale2->autorelease();
+ CCActionInterval* sc_back2 = scale2->reverse();
+
+ imgMipMap->runAction(CCRepeatForever::actionWithAction((CCActionInterval*)(CCSequence::actions(scale1, sc_back, NULL))));
+ img->runAction(CCRepeatForever::actionWithAction((CCActionInterval*)(CCSequence::actions(scale2, sc_back2, NULL))));
+ }
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRMipMap::title()
+{
+ return "PVRTC MipMap Test";
+}
+std::string TexturePVRMipMap::subtitle()
+{
+ return "Left image uses mipmap. Right image doesn't";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRMipMap2
+//
+//------------------------------------------------------------------
+void TexturePVRMipMap2::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *imgMipMap = CCSprite::spriteWithFile("Images/test_image_rgba4444_mipmap.pvr");
+ imgMipMap->setPosition(ccp( s.width/2.0f-100, s.height/2.0f));
+ addChild(imgMipMap);
+
+ // support mipmap filtering
+ ccTexParams texParams = { GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE };
+ imgMipMap->getTexture()->setTexParameters(&texParams);
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image.png");
+ img->setPosition(ccp( s.width/2.0f+100, s.height/2.0f));
+ addChild(img);
+
+ CCEaseOut* scale1 = CCEaseOut::actionWithAction(CCScaleBy::actionWithDuration(4, 0.01f), 3);
+ CCActionInterval* sc_back = scale1->reverse();
+
+ CCEaseOut* scale2 = (CCEaseOut*) (scale1->copy());
+ scale2->autorelease();
+ CCActionInterval* sc_back2 = scale2->reverse();
+
+ imgMipMap->runAction(CCRepeatForever::actionWithAction((CCActionInterval*)(CCSequence::actions(scale1, sc_back, NULL))));
+ img->runAction(CCRepeatForever::actionWithAction((CCActionInterval*)(CCSequence::actions(scale2, sc_back2, NULL))));
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRMipMap2::title()
+{
+ return "PVR MipMap Test #2";
+}
+
+std::string TexturePVRMipMap2::subtitle()
+{
+ return "Left image uses mipmap. Right image doesn't";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVR2BPP
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVR2BPP::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_pvrtc2bpp.pvr");
+
+ if( img )
+ {
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ }
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVR2BPP::title()
+{
+ return "PVR TC 2bpp Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRRaw
+// To generate PVR images read this article:
+// http://developer.apple.com/iphone/library/qa/qa2008/qa1611.html
+//
+//------------------------------------------------------------------
+void TexturePVRRaw::onEnter()
+{
+ TextureDemo::onEnter();
+#ifdef CC_SUPPORT_PVRTC
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCTexture2D *tex = CCTextureCache::sharedTextureCache()->addPVRTCImage("Images/test_image.pvrraw", 4, true, 128);
+ CCSprite *img = CCSprite::spriteWithTexture(tex);
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+#else
+ CCLog("Not support PVRTC!");
+#endif
+
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRRaw::title()
+{
+ return "PVR TC 4bpp Test #1 (Raw)";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVR
+// To generate PVR images read this article:
+// http://developer.apple.com/iphone/library/qa/qa2008/qa1611.html
+//
+//------------------------------------------------------------------
+void TexturePVR::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image.pvr");
+
+ if( img )
+ {
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ }
+ else
+ {
+ CCLog("This test is not supported.");
+ }
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+
+}
+
+std::string TexturePVR::title()
+{
+ return "PVR TC 4bpp Test #2";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVR4BPP
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVR4BPP::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_pvrtc4bpp.pvr");
+
+ if( img )
+ {
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ }
+ else
+ {
+ CCLog("This test is not supported in cocos2d-mac");
+ }
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVR4BPP::title()
+{
+ return "PVR TC 4bpp Test #3";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRRGBA8888
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRRGBA8888::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_rgba8888.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRRGBA8888::title()
+{
+ return "PVR + RGBA 8888 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRBGRA8888
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRBGRA8888::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_bgra8888.pvr");
+ if( img )
+ {
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ }
+ else
+ {
+ CCLog("BGRA8888 images are not supported");
+ }
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRBGRA8888::title()
+{
+ return "PVR + BGRA 8888 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRRGBA5551
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRRGBA5551::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_rgba5551.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRRGBA5551::title()
+{
+ return "PVR + RGBA 5551 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRRGBA4444
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRRGBA4444::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_rgba4444.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRRGBA4444::title()
+{
+ return "PVR + RGBA 4444 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRRGBA4444GZ
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRRGBA4444GZ::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_rgba4444.pvr.gz");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRRGBA4444GZ::title()
+{
+ return "PVR + RGBA 4444 + GZ Test";
+}
+
+std::string TexturePVRRGBA4444GZ::subtitle()
+{
+ return "This is a gzip PVR image";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRRGBA4444CCZ
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRRGBA4444CCZ::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_rgba4444.pvr.ccz");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRRGBA4444CCZ::title()
+{
+ return "PVR + RGBA 4444 + CCZ Test";
+}
+
+std::string TexturePVRRGBA4444CCZ::subtitle()
+{
+ return "This is a ccz PVR image";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRRGB565
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRRGB565::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_rgb565.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRRGB565::title()
+{
+ return "PVR + RGB 565 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRA8
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRA8::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_a8.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+
+}
+
+std::string TexturePVRA8::title()
+{
+ return "PVR + A8 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRI8
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRI8::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_i8.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRI8::title()
+{
+ return "PVR + I8 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRAI88
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRAI88::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image_ai88.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRAI88::title()
+{
+ return "PVR + AI88 Test";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRBadEncoding
+// Image generated using PVRTexTool:
+// http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
+//
+//------------------------------------------------------------------
+void TexturePVRBadEncoding::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/test_image-bad_encoding.pvr");
+ if( img )
+ {
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ }
+}
+
+std::string TexturePVRBadEncoding::title()
+{
+ return "PVR Unsupported encoding";
+}
+
+std::string TexturePVRBadEncoding::subtitle()
+{
+ return "You should not see any image";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRNonSquare
+//
+//------------------------------------------------------------------
+void TexturePVRNonSquare::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/grossini_128x256_mipmap.pvr");
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRNonSquare::title()
+{
+ return "PVR + Non square texture";
+}
+
+std::string TexturePVRNonSquare::subtitle()
+{
+ return "Loading a 128x256 texture";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRNPOT4444
+//
+//------------------------------------------------------------------
+void TexturePVRNPOT4444::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/grossini_pvr_rgba4444.pvr");
+ if ( img )
+ {
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ }
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRNPOT4444::title()
+{
+ return "PVR RGBA4 + NPOT texture";
+}
+
+std::string TexturePVRNPOT4444::subtitle()
+{
+ return "Loading a 81x121 RGBA4444 texture.";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePVRNPOT8888
+//
+//------------------------------------------------------------------
+void TexturePVRNPOT8888::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *img = CCSprite::spriteWithFile("Images/grossini_pvr_rgba8888.pvr");
+ if( img )
+ {
+ img->setPosition(ccp( s.width/2.0f, s.height/2.0f));
+ addChild(img);
+ }
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePVRNPOT8888::title()
+{
+ return "PVR RGBA8 + NPOT texture";
+}
+
+std::string TexturePVRNPOT8888::subtitle()
+{
+ return "Loading a 81x121 RGBA8888 texture.";
+}
+
+//------------------------------------------------------------------
+//
+// TextureAlias
+//
+//------------------------------------------------------------------
+void TextureAlias::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ //
+ // Sprite 1: GL_LINEAR
+ //
+ // Default filter is GL_LINEAR
+
+ CCSprite *sprite = CCSprite::spriteWithFile("Images/grossinis_sister1.png");
+ sprite->setPosition(ccp( s.width/3.0f, s.height/2.0f));
+ addChild(sprite);
+
+ // this is the default filterting
+ sprite->getTexture()->setAntiAliasTexParameters();
+
+ //
+ // Sprite 1: GL_NEAREST
+ //
+
+ CCSprite *sprite2 = CCSprite::spriteWithFile("Images/grossinis_sister2.png");
+ sprite2->setPosition(ccp( 2*s.width/3.0f, s.height/2.0f));
+ addChild(sprite2);
+
+ // Use Nearest in this one
+ sprite2->getTexture()->setAliasTexParameters();
+
+ // scale them to show
+ CCScaleBy* sc = CCScaleBy::actionWithDuration(3, 8.0f);
+ CCScaleBy* sc_back = (CCScaleBy*) (sc->reverse());
+ CCRepeatForever* scaleforever = CCRepeatForever::actionWithAction((CCActionInterval*) (CCSequence::actions(sc, sc_back, NULL)));
+ CCRepeatForever* scaleToo = (CCRepeatForever*) (scaleforever->copy());
+ scaleToo->autorelease();
+
+ sprite2->runAction(scaleforever);
+ sprite->runAction(scaleToo);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TextureAlias::title()
+{
+ return "AntiAlias / Alias textures";
+}
+
+std::string TextureAlias::subtitle()
+{
+ return "Left image is antialiased. Right image is aliases";
+}
+
+//------------------------------------------------------------------
+//
+// TexturePixelFormat
+//
+//------------------------------------------------------------------
+void TexturePixelFormat::onEnter()
+{
+ //
+ // This example displays 1 png images 4 times.
+ // Each time the image is generated using:
+ // 1- 32-bit RGBA8
+ // 2- 16-bit RGBA4
+ // 3- 16-bit RGB5A1
+ // 4- 16-bit RGB565
+ TextureDemo::onEnter();
+
+ CCLabelTTF *label = (CCLabelTTF*) getChildByTag(kTagLabel);
+ label->setColor(ccc3(16,16,255));
+
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCLayerColor *background = CCLayerColor::layerWithColorWidthHeight(ccc4(128,128,128,255), s.width, s.height);
+ addChild(background, -1);
+
+ // RGBA 8888 image (32-bit)
+ CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_RGBA8888);
+ CCSprite *sprite1 = CCSprite::spriteWithFile("Images/test-rgba1.png");
+ sprite1->setPosition(ccp(1*s.width/6, s.height/2+32));
+ addChild(sprite1, 0);
+
+ // remove texture from texture manager
+ CCTextureCache::sharedTextureCache()->removeTexture(sprite1->getTexture());
+
+ // RGBA 4444 image (16-bit)
+ CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_RGBA4444);
+ CCSprite *sprite2 = CCSprite::spriteWithFile("Images/test-rgba1.png");
+ sprite2->setPosition(ccp(2*s.width/6, s.height/2-32));
+ addChild(sprite2, 0);
+
+ // remove texture from texture manager
+ CCTextureCache::sharedTextureCache()->removeTexture(sprite2->getTexture());
+
+ // RGB5A1 image (16-bit)
+ CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_RGB5A1);
+ CCSprite *sprite3 = CCSprite::spriteWithFile("Images/test-rgba1.png");
+ sprite3->setPosition(ccp(3*s.width/6, s.height/2+32));
+ addChild(sprite3, 0);
+
+ // remove texture from texture manager
+ CCTextureCache::sharedTextureCache()->removeTexture(sprite3->getTexture());
+
+ // RGB565 image (16-bit)
+ CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_RGB565);
+ CCSprite *sprite4 = CCSprite::spriteWithFile("Images/test-rgba1.png");
+ sprite4->setPosition(ccp(4*s.width/6, s.height/2-32));
+ addChild(sprite4, 0);
+
+ // remove texture from texture manager
+ CCTextureCache::sharedTextureCache()->removeTexture(sprite4->getTexture());
+
+ // A8 image (8-bit)
+ CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_A8);
+ CCSprite *sprite5 = CCSprite::spriteWithFile("Images/test-rgba1.png");
+ sprite5->setPosition(ccp(5*s.width/6, s.height/2+32));
+ addChild(sprite5, 0);
+
+ // remove texture from texture manager
+ CCTextureCache::sharedTextureCache()->removeTexture(sprite5->getTexture());
+
+ CCFadeOut* fadeout = CCFadeOut::actionWithDuration(2);
+ CCFadeIn* fadein = CCFadeIn::actionWithDuration(2);
+ CCFiniteTimeAction* seq = CCSequence::actions(CCDelayTime::actionWithDuration(2), fadeout, fadein, NULL);
+ CCRepeatForever* seq_4ever = CCRepeatForever::actionWithAction((CCActionInterval*) seq);
+ CCRepeatForever* seq_4ever2 = (CCRepeatForever*) (seq_4ever->copy()); seq_4ever2->autorelease();
+ CCRepeatForever* seq_4ever3 = (CCRepeatForever*) (seq_4ever->copy()); seq_4ever3->autorelease();
+ CCRepeatForever* seq_4ever4 = (CCRepeatForever*) (seq_4ever->copy()); seq_4ever4->autorelease();
+ CCRepeatForever* seq_4ever5 = (CCRepeatForever*) (seq_4ever->copy()); seq_4ever5->autorelease();
+
+ sprite1->runAction(seq_4ever);
+ sprite2->runAction(seq_4ever2);
+ sprite3->runAction(seq_4ever3);
+ sprite4->runAction(seq_4ever4);
+ sprite5->runAction(seq_4ever5);
+
+ // restore default
+ CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_Default);
+ CCTextureCache::sharedTextureCache()->dumpCachedTextureInfo();
+}
+
+std::string TexturePixelFormat::title()
+{
+ return "Texture Pixel Formats";
+}
+
+std::string TexturePixelFormat::subtitle()
+{
+ return "Textures: RGBA8888, RGBA4444, RGB5A1, RGB565, A8";
+}
+
+//------------------------------------------------------------------
+//
+// TextureBlend
+//
+//------------------------------------------------------------------
+void TextureBlend::onEnter()
+{
+ TextureDemo::onEnter();
+
+ for( int i=0;i < 15;i++ )
+ {
+ // BOTTOM sprites have alpha pre-multiplied
+ // they use by default GL_ONE, GL_ONE_MINUS_SRC_ALPHA
+ CCSprite *cloud = CCSprite::spriteWithFile("Images/test_blend.png");
+ addChild(cloud, i+1, 100+i);
+ cloud->setPosition(ccp(50+25*i, 80));
+ ccBlendFunc blendFunc1 = { GL_ONE, GL_ONE_MINUS_SRC_ALPHA };
+ cloud->setBlendFunc(blendFunc1);
+
+ // CENTER sprites have also alpha pre-multiplied
+ // they use by default GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
+ cloud = CCSprite::spriteWithFile("Images/test_blend.png");
+ addChild(cloud, i+1, 200+i);
+ cloud->setPosition(ccp(50+25*i, 160));
+ ccBlendFunc blendFunc2 = { GL_ONE_MINUS_DST_COLOR, GL_ZERO };
+ cloud->setBlendFunc(blendFunc2);
+
+ // UPPER sprites are using custom blending function
+ // You can set any blend function to your sprites
+ cloud = CCSprite::spriteWithFile("Images/test_blend.png");
+ addChild(cloud, i+1, 200+i);
+ cloud->setPosition(ccp(50+25*i, 320-80));
+ ccBlendFunc blendFunc3 = { GL_SRC_ALPHA, GL_ONE };
+ cloud->setBlendFunc(blendFunc3); // additive blending
+ }
+}
+
+std::string TextureBlend::title()
+{
+ return "Texture Blending";
+}
+
+std::string TextureBlend::subtitle()
+{
+ return "Testing 3 different blending modes";
+}
+
+//------------------------------------------------------------------
+//
+// TextureGlClamp
+//
+//------------------------------------------------------------------
+void TextureGlClamp::onEnter()
+{
+ TextureDemo::onEnter();
+
+ CCSize size = CCDirector::sharedDirector()->getWinSize();
+
+ // The .png image MUST be power of 2 in order to create a continue effect.
+ // eg: 32x64, 512x128, 256x1024, 64x64, etc..
+ CCSprite *sprite = CCSprite::spriteWithFile("Images/pattern1.png", CCRectMake(0,0,512,256));
+ addChild(sprite, -1, kTagSprite1);
+ sprite->setPosition(ccp(size.width/2,size.height/2));
+ ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE};
+ sprite->getTexture()->setTexParameters(¶ms);
+
+ CCRotateBy* rotate = CCRotateBy::actionWithDuration(4, 360);
+ sprite->runAction(rotate);
+ CCScaleBy* scale = CCScaleBy::actionWithDuration(2, 0.04f);
+ CCScaleBy* scaleBack = (CCScaleBy*) (scale->reverse());
+ CCFiniteTimeAction* seq = CCSequence::actions(scale, scaleBack, NULL);
+ sprite->runAction(seq);
+}
+
+std::string TextureGlClamp::title()
+{
+ return "Texture GL_CLAMP";
+}
+
+TextureGlClamp::~TextureGlClamp()
+{
+ CCTextureCache::sharedTextureCache()->removeUnusedTextures();
+}
+
+//------------------------------------------------------------------
+//
+// TextureGlRepeat
+//
+//------------------------------------------------------------------
+void TextureGlRepeat::onEnter()
+{
+ TextureDemo::onEnter();
+
+ CCSize size = CCDirector::sharedDirector()->getWinSize();
+
+ // The .png image MUST be power of 2 in order to create a continue effect.
+ // eg: 32x64, 512x128, 256x1024, 64x64, etc..
+ CCSprite *sprite = CCSprite::spriteWithFile("Images/pattern1.png", CCRectMake(0, 0, 4096, 4096));
+ addChild(sprite, -1, kTagSprite1);
+ sprite->setPosition(ccp(size.width/2,size.height/2));
+ ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT};
+ sprite->getTexture()->setTexParameters(¶ms);
+
+ CCRotateBy* rotate = CCRotateBy::actionWithDuration(4, 360);
+ sprite->runAction(rotate);
+ CCScaleBy* scale = CCScaleBy::actionWithDuration(2, 0.04f);
+ CCScaleBy* scaleBack = (CCScaleBy*) (scale->reverse());
+ CCFiniteTimeAction* seq = CCSequence::actions(scale, scaleBack, NULL);
+ sprite->runAction(seq);
+}
+
+std::string TextureGlRepeat::title()
+{
+ return "Texture GL_REPEAT";
+}
+
+TextureGlRepeat::~TextureGlRepeat()
+{
+ CCTextureCache::sharedTextureCache()->removeUnusedTextures();
+}
+
+//------------------------------------------------------------------
+//
+// TextureSizeTest
+//
+//------------------------------------------------------------------
+void TextureSizeTest::onEnter()
+{
+ TextureDemo::onEnter();
+ CCSprite *sprite = NULL;
+
+ CCLog("Loading 512x512 image...");
+ sprite = CCSprite::spriteWithFile("Images/texture512x512.png");
+ if( sprite )
+ CCLog("OK\n");
+ else
+ CCLog("Error\n");
+
+ CCLog("Loading 1024x1024 image...");
+ sprite = CCSprite::spriteWithFile("Images/texture1024x1024.png");
+ if( sprite )
+ CCLog("OK\n");
+ else
+ CCLog("Error\n");
+// @todo
+// CCLog("Loading 2048x2048 image...");
+// sprite = CCSprite::spriteWithFile("Images/texture2048x2048.png");
+// if( sprite )
+// CCLog("OK\n");
+// else
+// CCLog("Error\n");
+//
+// CCLog("Loading 4096x4096 image...");
+// sprite = CCSprite::spriteWithFile("Images/texture4096x4096.png");
+// if( sprite )
+// CCLog("OK\n");
+// else
+// CCLog("Error\n");
+}
+
+std::string TextureSizeTest::title()
+{
+ return "Different Texture Sizes";
+}
+
+std::string TextureSizeTest::subtitle()
+{
+ return "512x512, 1024x1024. See the console.";
+}
+
+//------------------------------------------------------------------
+//
+// TextureCache1
+//
+//------------------------------------------------------------------
+void TextureCache1::onEnter()
+{
+ TextureDemo::onEnter();
+
+ CCSize s = CCDirector::sharedDirector()->getWinSize();
+
+ CCSprite *sprite;
+
+ sprite = CCSprite::spriteWithFile("Images/grossinis_sister1.png");
+ sprite->setPosition(ccp(s.width/5*1, s.height/2));
+ sprite->getTexture()->setAliasTexParameters();
+ sprite->setScale(2);
+ addChild(sprite);
+
+ CCTextureCache::sharedTextureCache()->removeTexture(sprite->getTexture());
+
+ sprite = CCSprite::spriteWithFile("Images/grossinis_sister1.png");
+ sprite->setPosition(ccp(s.width/5*2, s.height/2));
+ sprite->getTexture()->setAntiAliasTexParameters();
+ sprite->setScale(2);
+ addChild(sprite);
+
+ // 2nd set of sprites
+
+ sprite = CCSprite::spriteWithFile("Images/grossinis_sister2.png");
+ sprite->setPosition(ccp(s.width/5*3, s.height/2));
+ sprite->getTexture()->setAliasTexParameters();
+ sprite->setScale(2);
+ addChild(sprite);
+
+ CCTextureCache::sharedTextureCache()->removeTextureForKey("Images/grossinis_sister2.png");
+
+ sprite = CCSprite::spriteWithFile("Images/grossinis_sister2.png");
+ sprite->setPosition(ccp(s.width/5*4, s.height/2));
+ sprite->getTexture()->setAntiAliasTexParameters();
+ sprite->setScale(2);
+ addChild(sprite);
+}
+
+std::string TextureCache1::title()
+{
+ return "CCTextureCache: remove";
+}
+
+std::string TextureCache1::subtitle()
+{
+ return "4 images should appear: alias, antialias, alias, antilias";
+}
+
+//------------------------------------------------------------------
+//
+// TextureTestScene
+//
+//------------------------------------------------------------------
+void TextureTestScene::runThisTest()
+{
+ CCLayer* pLayer = nextTextureTest();
+ addChild(pLayer);
+ CCDirector::sharedDirector()->replaceScene(this);
+}
diff --git a/tests/tests/Texture2dTest/Texture2dTest.h b/tests/tests/Texture2dTest/Texture2dTest.h
new file mode 100644
index 0000000000..1e549e3041
--- /dev/null
+++ b/tests/tests/Texture2dTest/Texture2dTest.h
@@ -0,0 +1,266 @@
+#ifndef __TEXTURE2D_TEST_H__
+#define __TEXTURE2D_TEST_H__
+
+#include "../testBasic.h"
+
+class TextureDemo : public CCLayer
+{
+public:
+ virtual ~TextureDemo();
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+
+ void restartCallback(CCObject* pSender);
+ void nextCallback(CCObject* pSender);
+ void backCallback(CCObject* pSender);
+};
+
+class TexturePNG : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual void onEnter();
+};
+
+class TextureJPEG : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TextureMipMap : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVR : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVR2BPP : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVR4BPP : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRRGBA8888 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRBGRA8888 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRRGBA4444 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRRGBA4444GZ : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRRGBA4444CCZ : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRRGBA5551 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRRGB565 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRA8 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRI8 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRAI88 : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TexturePVRBadEncoding : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRMipMap : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRMipMap2 : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRNonSquare : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRNPOT4444 : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRNPOT8888 : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePVRRaw : public TextureDemo
+{
+public:
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TextureAlias : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TexturePixelFormat : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TextureBlend : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TextureGlRepeat : public TextureDemo
+{
+public:
+ virtual ~TextureGlRepeat();
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TextureGlClamp : public TextureDemo
+{
+public:
+ virtual ~TextureGlClamp();
+ virtual std::string title();
+
+ virtual void onEnter();
+};
+
+class TextureSizeTest : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TextureCache1 : public TextureDemo
+{
+public:
+ virtual std::string title();
+ virtual std::string subtitle();
+ virtual void onEnter();
+};
+
+class TextureTestScene : public TestScene
+{
+public:
+ virtual void runThisTest();
+};
+
+#endif // __TEXTURE2D_TEST_H__
diff --git a/tests/tests/controller.cpp b/tests/tests/controller.cpp
index 7fa8bf8c45..ce1cfef214 100644
--- a/tests/tests/controller.cpp
+++ b/tests/tests/controller.cpp
@@ -74,6 +74,8 @@ static TestScene* CreateTestScene(int nIdx)
pScene = new SchedulerTestScene(); break;
case TEST_RENDERTEXTURE:
pScene = new RenderTextureScene(); break;
+ case TEST_TEXTURE2D:
+ pScene = new TextureTestScene(); break;
case TEST_BOX2D:
pScene = new Box2DTestScene(); break;
case TEST_BOX2DBED:
diff --git a/tests/tests/tests.h b/tests/tests/tests.h
index 581d0c54e7..7bcf487e5f 100644
--- a/tests/tests/tests.h
+++ b/tests/tests/tests.h
@@ -41,6 +41,7 @@
#include "UserDefaultTest/UserDefaultTest.h"
#include "DirectorTest/DirectorTest.h"
#include "BugsTest/BugsTest.h"
+#include "Texture2dTest/Texture2dTest.h"
#if (CC_TARGET_PLATFORM != CC_PLATFORM_AIRPLAY)
#include "ChipmunkTest/cocos2dChipmunkDemo.h"
@@ -79,6 +80,7 @@ enum
TEST_SPRITE,
TEST_SCHEDULER,
TEST_RENDERTEXTURE,
+ TEST_TEXTURE2D,
TEST_BOX2D,
TEST_BOX2DBED,
TEST_EFFECT_ADVANCE,
@@ -122,6 +124,7 @@ const std::string g_aTestNames[TESTS_COUNT] = {
"SpriteTest",
"SchdulerTest",
"RenderTextureTest",
+ "Texture2DTest",
"Box2dTest",
"Box2dTestBed",
"EffectAdvancedTest",