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",