axmol/samples/Lua/TestLua/Resources/luaScript/Texture2dTest/Texture2dTest.lua

1435 lines
46 KiB
Lua

local scheduler = cc.Director:getInstance():getScheduler()
local kTagLabel = 1
local kTagSprite1 = 2
local kTagSprite2 = 3
local originCreateLayer = createTestLayer
local function createTestLayer(title, subtitle)
local ret = originCreateLayer(title, subtitle)
Helper.titleLabel:setTag(kTagLabel)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
local col = cc.LayerColor:create(cc.c4b(128,128,128,255))
ret:addChild(col, -10)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TextureTIFF
--
--------------------------------------------------------------------
local function TextureTIFF()
local ret = createTestLayer("TIFF Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image.tiff")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePNG
--
--------------------------------------------------------------------
local function TexturePNG()
local ret = createTestLayer("PNG Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image.png")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TextureJPEG
--
--------------------------------------------------------------------
local function TextureJPEG()
local ret = createTestLayer("JPEG Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image.jpeg")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TextureWEBP
--
--------------------------------------------------------------------
local function TextureWEBP()
local ret = createTestLayer("WEBP Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image.webp")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TextureMipMap
--
--------------------------------------------------------------------
local function TextureMipMap()
local ret = createTestLayer("Texture Mipmap",
"Left image uses mipmap. Right image doesn't")
local s = cc.Director:getInstance():getWinSize()
local texture0 = cc.TextureCache:getInstance():addImage(
"Images/grossini_dance_atlas.png")
texture0:generateMipmap()
texture0:setTexParameters(gl.LINEAR_MIPMAP_LINEAR, gl.LINEAR, gl.CLAMP_TO_EDGE, gl.CLAMP_TO_EDGE)
local texture1 = cc.TextureCache:getInstance():addImage(
"Images/grossini_dance_atlas_nomipmap.png")
local img0 = cc.Sprite:createWithTexture(texture0)
img0:setTextureRect(cc.rect(85, 121, 85, 121))
img0:setPosition(cc.p( s.width/3.0, s.height/2.0))
ret:addChild(img0)
local img1 = cc.Sprite:createWithTexture(texture1)
img1:setTextureRect(cc.rect(85, 121, 85, 121))
img1:setPosition(cc.p( 2*s.width/3.0, s.height/2.0))
ret:addChild(img1)
local scale1 = cc.EaseOut:create(cc.ScaleBy:create(4, 0.01), 3)
local sc_back = scale1:reverse()
local scale2 = tolua.cast(scale1:clone(), "EaseOut")
local sc_back2 = scale2:reverse()
img0:runAction(cc.RepeatForever:create(cc.Sequence:create(scale1, sc_back)))
img1:runAction(cc.RepeatForever:create(cc.Sequence:create(scale2, sc_back2)))
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRMipMap
-- To generate PVR images read this article:
-- http:--developer.apple.com/iphone/library/qa/qa2008/qa1611.html
--
--------------------------------------------------------------------
local function TexturePVRMipMap()
local ret = createTestLayer("PVRTC MipMap Test", "Left image uses mipmap. Right image doesn't")
local s = cc.Director:getInstance():getWinSize()
local imgMipMap = cc.Sprite:create("Images/logo-mipmap.pvr")
if imgMipMap ~= nil then
imgMipMap:setPosition(cc.p( s.width/2.0-100, s.height/2.0))
ret:addChild(imgMipMap)
-- support mipmap filtering
imgMipMap:getTexture():setTexParameters(gl.LINEAR_MIPMAP_LINEAR, gl.LINEAR, gl.CLAMP_TO_EDGE, gl.CLAMP_TO_EDGE)
end
local img = cc.Sprite:create("Images/logo-nomipmap.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0+100, s.height/2.0))
ret:addChild(img)
local scale1 = cc.EaseOut:create(cc.ScaleBy:create(4, 0.01), 3)
local sc_back = scale1:reverse()
local scale2 = tolua.cast(scale1:clone(), "EaseOut")
local sc_back2 = scale2:reverse()
imgMipMap:runAction(cc.RepeatForever:create(cc.Sequence:create(scale1, sc_back)))
img:runAction(cc.RepeatForever:create(cc.Sequence:create(scale2, sc_back2)))
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRMipMap2
--
--------------------------------------------------------------------
local function TexturePVRMipMap2()
local ret = createTestLayer("PVR MipMap Test #2", "Left image uses mipmap. Right image doesn't")
local s = cc.Director:getInstance():getWinSize()
local imgMipMap = cc.Sprite:create("Images/test_image_rgba4444_mipmap.pvr")
imgMipMap:setPosition(cc.p( s.width/2.0-100, s.height/2.0))
ret:addChild(imgMipMap)
-- support mipmap filtering
imgMipMap:getTexture():setTexParameters(gl.LINEAR_MIPMAP_LINEAR, gl.LINEAR, gl.CLAMP_TO_EDGE, gl.CLAMP_TO_EDGE)
local img = cc.Sprite:create("Images/test_image.png")
img:setPosition(cc.p( s.width/2.0+100, s.height/2.0))
ret:addChild(img)
local scale1 = cc.EaseOut:create(cc.ScaleBy:create(4, 0.01), 3)
local sc_back = scale1:reverse()
local scale2 = tolua.cast(scale1:clone(), "EaseOut")
local sc_back2 = scale2:reverse()
imgMipMap:runAction(cc.RepeatForever:create(cc.Sequence:create(scale1, sc_back)))
img:runAction(cc.RepeatForever:create(cc.Sequence:create(scale2, sc_back2)))
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVR2BPP
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVR2BPP()
local ret = createTestLayer("PVR TC 2bpp Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_pvrtc2bpp.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVR
-- To generate PVR images read this article:
-- http:--developer.apple.com/iphone/library/qa/qa2008/qa1611.html
--
--------------------------------------------------------------------
local function TexturePVR()
local ret = createTestLayer("PVR TC 4bpp Test #2")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
else
cclog("This test is not supported.")
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVR4BPP
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVR4BPP()
local ret = createTestLayer("PVR TC 4bpp Test #3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_pvrtc4bpp.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
else
cclog("This test is not supported in cocos2d-mac")
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRRGBA8888
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRRGBA8888()
local ret = createTestLayer("PVR + RGBA 8888 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba8888.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRBGRA8888
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRBGRA8888()
local ret = createTestLayer("PVR + BGRA 8888 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_bgra8888.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
else
cclog("BGRA8888 images are not supported")
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRRGBA5551
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRRGBA5551()
local ret = createTestLayer("PVR + RGBA 5551 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba5551.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRRGBA4444
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRRGBA4444()
local ret = createTestLayer("PVR + RGBA 4444 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba4444.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRRGBA4444GZ
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRRGBA4444GZ()
local ret = createTestLayer("PVR + RGBA 4444 + GZ Test",
"This is a gzip PVR image")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba4444.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRRGBA4444CCZ
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRRGBA4444CCZ()
local ret = createTestLayer("PVR + RGBA 4444 + cc.Z Test",
"This is a ccz PVR image")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba4444.pvr.ccz")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRRGB565
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRRGB565()
local ret = createTestLayer("PVR + RGB 565 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgb565.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVR RGB888
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
local function TexturePVRRGB888()
local ret = createTestLayer("PVR + RGB 888 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgb888.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRA8
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRA8()
local ret = createTestLayer("PVR + A8 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_a8.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRI8
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRI8()
local ret = createTestLayer("PVR + I8 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_i8.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRAI88
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRAI88()
local ret = createTestLayer("PVR + AI88 Test")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_ai88.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVR2BPPv3
local function TexturePVR2BPPv3()
local ret = createTestLayer("PVR TC 2bpp Test", "Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_pvrtc2bpp_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRII2BPPv3
local function TexturePVRII2BPPv3()
local ret = createTestLayer("PVR TC II 2bpp Test", "Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_pvrtcii2bpp_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVR4BPPv3
local function TexturePVR4BPPv3()
local ret = createTestLayer("PVR TC 4bpp Test", "Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_pvrtc4bpp_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
else
cclog("This test is not supported")
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRII4BPPv3
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
local function TexturePVRII4BPPv3()
local ret = createTestLayer("PVR TC II 4bpp Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_pvrtcii4bpp_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
else
cclog("This test is not supported")
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRRGBA8888v3
local function TexturePVRRGBA8888v3()
local ret = createTestLayer("PVR + RGBA 8888 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba8888_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRBGRA8888v3
local function TexturePVRBGRA8888v3()
local ret = createTestLayer("PVR + BGRA 8888 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_bgra8888_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
else
cclog("BGRA images are not supported")
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRRGBA5551v3
local function TexturePVRRGBA5551v3()
local ret = createTestLayer("PVR + RGBA 5551 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba5551_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRRGBA4444v3
local function TexturePVRRGBA4444v3()
local ret = createTestLayer("PVR + RGBA 4444 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgba4444_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRRGB565v3
local function TexturePVRRGB565v3()
local ret = createTestLayer("PVR + RGB 565 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgb565_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRRGB888v3
local function TexturePVRRGB888v3()
local ret = createTestLayer("PVR + RGB 888 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_rgb888_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRA8v3
local function TexturePVRA8v3()
local ret = createTestLayer("PVR + A8 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_a8_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRI8v3
local function TexturePVRI8v3()
local ret = createTestLayer("PVR + I8 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_i8_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
-- TexturePVRAI88v3
local function TexturePVRAI88v3()
local ret = createTestLayer("PVR + AI88 Test",
"Testing PVR File Format v3")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image_ai88_v3.pvr")
if img ~= nil then
img:setPosition(cc.p(s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRBadEncoding
-- Image generated using PVRTexTool:
-- http:--www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
--
--------------------------------------------------------------------
local function TexturePVRBadEncoding()
local ret = createTestLayer("PVR Unsupported encoding",
"You should not see any image")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/test_image-bad_encoding.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
end
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRNonSquare
--
--------------------------------------------------------------------
local function TexturePVRNonSquare()
local ret = createTestLayer("PVR + Non square texture",
"Loading a 128x256 texture")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/grossini_128x256_mipmap.pvr")
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRNPOT4444
--
--------------------------------------------------------------------
local function TexturePVRNPOT4444()
local ret = createTestLayer("PVR RGBA4 + NPOT texture",
"Loading a 81x121 RGBA4444 texture.")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/grossini_pvr_rgba4444.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePVRNPOT8888
--
--------------------------------------------------------------------
local function TexturePVRNPOT8888()
local ret = createTestLayer("PVR RGBA8 + NPOT texture",
"Loading a 81x121 RGBA8888 texture.")
local s = cc.Director:getInstance():getWinSize()
local img = cc.Sprite:create("Images/grossini_pvr_rgba8888.pvr")
if img ~= nil then
img:setPosition(cc.p( s.width/2.0, s.height/2.0))
ret:addChild(img)
end
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TextureAlias
--
--------------------------------------------------------------------
local function TextureAlias()
local ret = createTestLayer("AntiAlias / Alias textures",
"Left image is antialiased. Right image is aliases")
local s = cc.Director:getInstance():getWinSize()
--
-- Sprite 1: gl.LINEAR
--
-- Default filter is gl.LINEAR
local sprite = cc.Sprite:create("Images/grossinis_sister1.png")
sprite:setPosition(cc.p( s.width/3.0, s.height/2.0))
ret:addChild(sprite)
-- this is the default filterting
sprite:getTexture():setAntiAliasTexParameters()
--
-- Sprite 1: GL_NEAREST
--
local sprite2 = cc.Sprite:create("Images/grossinis_sister2.png")
sprite2:setPosition(cc.p( 2*s.width/3.0, s.height/2.0))
ret:addChild(sprite2)
-- Use Nearest in this one
sprite2:getTexture():setAliasTexParameters()
-- scale them to show
local sc = cc.ScaleBy:create(3, 8.0)
local sc_back = tolua.cast(sc:reverse(), "ScaleBy")
local scaleforever = cc.RepeatForever:create(cc.Sequence:create(sc, sc_back))
local scaleToo = tolua.cast(scaleforever:clone(), "RepeatForever")
sprite2:runAction(scaleforever)
sprite:runAction(scaleToo)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TexturePixelFormat
--
--------------------------------------------------------------------
local function TexturePixelFormat()
local ret = createTestLayer("Texture Pixel Formats",
"Textures: RGBA8888, RGBA4444, RGB5A1, RGB888, RGB565, A8")
--
-- 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
local label = tolua.cast(ret:getChildByTag(kTagLabel), "LabelTTF")
label:setColor(cc.c3b(16,16,255))
local s = cc.Director:getInstance():getWinSize()
local background = cc.LayerColor:create(cc.c4b(128,128,128,255), s.width, s.height)
ret:addChild(background, -1)
-- RGBA 8888 image (32-bit)
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888)
local sprite1 = cc.Sprite:create("Images/test-rgba1.png")
sprite1:setPosition(cc.p(1*s.width/7, s.height/2+32))
ret:addChild(sprite1, 0)
-- remove texture from texture manager
cc.TextureCache:getInstance():removeTexture(sprite1:getTexture())
-- RGBA 4444 image (16-bit)
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A4444)
local sprite2 = cc.Sprite:create("Images/test-rgba1.png")
sprite2:setPosition(cc.p(2*s.width/7, s.height/2-32))
ret:addChild(sprite2, 0)
-- remove texture from texture manager
cc.TextureCache:getInstance():removeTexture(sprite2:getTexture())
-- RGB5A1 image (16-bit)
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_RGB5_A1)
local sprite3 = cc.Sprite:create("Images/test-rgba1.png")
sprite3:setPosition(cc.p(3*s.width/7, s.height/2+32))
ret:addChild(sprite3, 0)
-- remove texture from texture manager
cc.TextureCache:getInstance():removeTexture(sprite3:getTexture())
-- RGB888 image
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_RG_B888 )
local sprite4 = cc.Sprite:create("Images/test-rgba1.png")
sprite4:setPosition(cc.p(4*s.width/7, s.height/2-32))
ret:addChild(sprite4, 0)
-- remove texture from texture manager
cc.TextureCache:getInstance():removeTexture(sprite4:getTexture())
-- RGB565 image (16-bit)
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_RG_B565)
local sprite5 = cc.Sprite:create("Images/test-rgba1.png")
sprite5:setPosition(cc.p(5*s.width/7, s.height/2+32))
ret:addChild(sprite5, 0)
-- remove texture from texture manager
cc.TextureCache:getInstance():removeTexture(sprite5:getTexture())
-- A8 image (8-bit)
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_A8 )
local sprite6 = cc.Sprite:create("Images/test-rgba1.png")
sprite6:setPosition(cc.p(6*s.width/7, s.height/2-32))
ret:addChild(sprite6, 0)
-- remove texture from texture manager
cc.TextureCache:getInstance():removeTexture(sprite6:getTexture())
local fadeout = cc.FadeOut:create(2)
local fadein = cc.FadeIn:create(2)
local seq = cc.Sequence:create(cc.DelayTime:create(2), fadeout, fadein)
local seq_4ever = cc.RepeatForever:create(seq)
local seq_4ever2 = tolua.cast(seq_4ever:clone(), "RepeatForever")
local seq_4ever3 = tolua.cast(seq_4ever:clone(), "RepeatForever")
local seq_4ever4 = tolua.cast(seq_4ever:clone(), "RepeatForever")
local seq_4ever5 = tolua.cast(seq_4ever:clone(), "RepeatForever")
sprite1:runAction(seq_4ever)
sprite2:runAction(seq_4ever2)
sprite3:runAction(seq_4ever3)
sprite4:runAction(seq_4ever4)
sprite5:runAction(seq_4ever5)
-- restore default
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_DEFAULT)
cc.TextureCache:getInstance():dumpCachedTextureInfo()
return ret
end
--------------------------------------------------------------------
--
-- TextureBlend
--
--------------------------------------------------------------------
local function TextureBlend()
local ret = createTestLayer("Texture Blending",
"Testing 3 different blending modes")
local i = 0
for i=0, 14 do
-- BOTTOM sprites have alpha pre-multiplied
-- they use by default GL_ONE, GL_ONE_MINUS_SRC_ALPHA
local cloud = cc.Sprite:create("Images/test_blend.png")
ret:addChild(cloud, i+1, 100+i)
cloud:setPosition(cc.p(50+25*i, 80))
cloud:setBlendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)
-- CENTER sprites have also alpha pre-multiplied
-- they use by default GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
cloud = cc.Sprite:create("Images/test_blend.png")
ret:addChild(cloud, i+1, 200+i)
cloud:setPosition(cc.p(50+25*i, 160))
cloud:setBlendFunc(gl.ONE_MINUS_DST_COLOR , gl.ZERO)
-- UPPER sprites are using custom blending function
-- You can set any blend function to your sprites
cloud = cc.Sprite:create("Images/test_blend.png")
ret:addChild(cloud, i+1, 200+i)
cloud:setPosition(cc.p(50+25*i, 320-80))
cloud:setBlendFunc(gl.SRC_ALPHA, gl.ONE) -- additive blending
end
return ret
end
--------------------------------------------------------------------
--
-- TextureAsync
--
--------------------------------------------------------------------
local function TextureAsync()
local ret = createTestLayer("Texture Async Load",
"Textures should load while an animation is being run")
local m_nImageOffset = 0
local size =cc.Director:getInstance():getWinSize()
local label = cc.LabelTTF:create("Loading...", "Marker Felt", 32)
label:setPosition(cc.p( size.width/2, size.height/2))
ret:addChild(label, 10)
local scale = cc.ScaleBy:create(0.3, 2)
local scale_back = tolua.cast(scale:reverse(), "ScaleBy")
local seq = cc.Sequence:create(scale, scale_back)
label:runAction(cc.RepeatForever:create(seq))
local function imageLoaded(pObj)
local tex = tolua.cast(pObj, "Texture2D")
local director = cc.Director:getInstance()
--cc.ASSERT( [NSThread currentThread] == [director runningThread], @"FAIL. Callback should be on cocos2d thread")
-- IMPORTANT: The order on the callback is not guaranteed. Don't depend on the callback
-- This test just creates a sprite based on the Texture
local sprite = cc.Sprite:createWithTexture(tex)
sprite:setAnchorPoint(cc.p(0,0))
ret:addChild(sprite, -1)
local size = director:getWinSize()
local i = m_nImageOffset * 32
sprite:setPosition(cc.p( i % size.width, (i / size.width) * 32 ))
m_nImageOffset = m_nImageOffset + 1
cclog("Image loaded:...")-- %p", tex)
end
local function loadImages(dt)
local i = 0
local j = 0
for i=0, 7 do
for j=0, 7 do
local szSpriteName = string.format(
"Images/sprites_test/sprite-%d-%d.png", i, j)
cc.TextureCache:getInstance():addImageAsync(
szSpriteName, imageLoaded)
end
end
cc.TextureCache:getInstance():addImageAsync("Images/background1.jpg", imageLoaded)
cc.TextureCache:getInstance():addImageAsync("Images/background2.jpg", imageLoaded)
cc.TextureCache:getInstance():addImageAsync("Images/background.png", imageLoaded)
cc.TextureCache:getInstance():addImageAsync("Images/atlastest.png", imageLoaded)
cc.TextureCache:getInstance():addImageAsync("Images/grossini_dance_atlas.png",imageLoaded)
end
local schedulerEntry = nil
local function onNodeEvent(event)
if event == "enter" then
schedulerEntry = scheduler:scheduleScriptFunc(loadImages, 1.0, false)
elseif event == "exit" then
scheduler:unscheduleScriptEntry(schedulerEntry)
cc.TextureCache:getInstance():removeAllTextures()
end
end
ret:registerScriptHandler(onNodeEvent)
return ret
end
--------------------------------------------------------------------
--
-- TextureGlClamp
--
--------------------------------------------------------------------
local function TextureGlClamp()
local ret = createTestLayer("Texture GL_CLAMP")
local size = cc.Director:getInstance():getWinSize()
-- The .png image MUST be power of 2 in order to create a continue effect.
-- eg: 32x64, 512x128, 256x1024, 64x64, etc..
local sprite = cc.Sprite:create("Images/pattern1.png", cc.rect(0,0,512,256))
ret:addChild(sprite, -1, kTagSprite1)
sprite:setPosition(cc.p(size.width/2,size.height/2))
sprite:getTexture():setTexParameters(gl.LINEAR, gl.LINEAR, gl.CLAMP_TO_EDGE, gl.CLAMP_TO_EDGE)
local rotate = cc.RotateBy:create(4, 360)
sprite:runAction(rotate)
local scale = cc.ScaleBy:create(2, 0.04)
local scaleBack = tolua.cast(scale:reverse(), "ScaleBy")
local seq = cc.Sequence:create(scale, scaleBack)
sprite:runAction(seq)
local function onNodeEvent(event)
if event == "exit" then
cc.TextureCache:getInstance():removeUnusedTextures()
end
end
ret:registerScriptHandler(onNodeEvent)
return ret
end
--------------------------------------------------------------------
--
-- TextureGlRepeat
--
--------------------------------------------------------------------
local function TextureGlRepeat()
local ret = createTestLayer("Texture gl.REPEAT")
local size = cc.Director:getInstance():getWinSize()
-- The .png image MUST be power of 2 in order to create a continue effect.
-- eg: 32x64, 512x128, 256x1024, 64x64, etc..
local sprite = cc.Sprite:create("Images/pattern1.png", cc.rect(0, 0, 4096, 4096))
ret:addChild(sprite, -1, kTagSprite1)
sprite:setPosition(cc.p(size.width/2,size.height/2))
sprite:getTexture():setTexParameters(gl.LINEAR, gl.LINEAR, gl.REPEAT, gl.REPEAT)
local rotate = cc.RotateBy:create(4, 360)
sprite:runAction(rotate)
local scale = cc.ScaleBy:create(2, 0.04)
local scaleBack = tolua.cast(scale:reverse(), "ScaleBy")
local seq = cc.Sequence:create(scale, scaleBack)
sprite:runAction(seq)
local function onNodeEvent(event)
if event == "exit" then
cc.TextureCache:getInstance():removeUnusedTextures()
end
end
ret:registerScriptHandler(onNodeEvent)
return ret
end
--------------------------------------------------------------------
--
-- TextureSizeTest
--
--------------------------------------------------------------------
local function TextureSizeTest()
local ret = createTestLayer("Different Texture Sizes",
"512x512, 1024x1024. See the console.")
local sprite = nil
cclog("Loading 512x512 image...")
sprite = cc.Sprite:create("Images/texture512x512.png")
if sprite ~= nil then
cclog("OK\n")
else
cclog("Error\n")
cclog("Loading 1024x1024 image...")
sprite = cc.Sprite:create("Images/texture1024x1024.png")
if sprite ~= nil then
cclog("OK\n")
else
cclog("Error\n")
-- @todo
-- cclog("Loading 2048x2048 image...")
-- sprite = cc.Sprite:create("Images/texture2048x2048.png")
-- if( sprite )
-- cclog("OK\n")
-- else
-- cclog("Error\n")
--
-- cclog("Loading 4096x4096 image...")
-- sprite = cc.Sprite:create("Images/texture4096x4096.png")
-- if( sprite )
-- cclog("OK\n")
-- else
-- cclog("Error\n")
end
end
return ret
end
--------------------------------------------------------------------
--
-- TextureCache1
--
--------------------------------------------------------------------
local function TextureCache1()
local ret = createTestLayer("TextureCache: remove",
"4 images should appear: alias, antialias, alias, antilias")
local s = cc.Director:getInstance():getWinSize()
local sprite = nil
sprite = cc.Sprite:create("Images/grossinis_sister1.png")
sprite:setPosition(cc.p(s.width/5*1, s.height/2))
sprite:getTexture():setAliasTexParameters()
sprite:setScale(2)
ret:addChild(sprite)
cc.TextureCache:getInstance():removeTexture(sprite:getTexture())
sprite = cc.Sprite:create("Images/grossinis_sister1.png")
sprite:setPosition(cc.p(s.width/5*2, s.height/2))
sprite:getTexture():setAntiAliasTexParameters()
sprite:setScale(2)
ret:addChild(sprite)
-- 2nd set of sprites
sprite = cc.Sprite:create("Images/grossinis_sister2.png")
sprite:setPosition(cc.p(s.width/5*3, s.height/2))
sprite:getTexture():setAliasTexParameters()
sprite:setScale(2)
ret:addChild(sprite)
cc.TextureCache:getInstance():removeTextureForKey("Images/grossinis_sister2.png")
sprite = cc.Sprite:create("Images/grossinis_sister2.png")
sprite:setPosition(cc.p(s.width/5*4, s.height/2))
sprite:getTexture():setAntiAliasTexParameters()
sprite:setScale(2)
ret:addChild(sprite)
return ret
end
-- TextureDrawAtPoint
local function TextureDrawAtPoint()
local m_pTex1 = nil
local m_pTex2F = nil
local ret = createTestLayer("Texture2D: drawAtPoint",
"draws 2 textures using drawAtPoint")
local function draw()
-- TextureDemo:draw()
local s = cc.Director:getInstance():getWinSize()
m_pTex1:drawAtPoint(cc.p(s.width/2-50, s.height/2 - 50))
m_pTex2F:drawAtPoint(cc.p(s.width/2+50, s.height/2 - 50))
end
m_pTex1 = cc.TextureCache:getInstance():addImage("Images/grossinis_sister1.png")
m_pTex2F = cc.TextureCache:getInstance():addImage("Images/grossinis_sister2.png")
m_pTex1:retain()
m_pTex2F:retain()
local function onNodeEvent(event)
if event == "exit" then
m_pTex1:release()
m_pTex2F:release()
end
end
ret:registerScriptHandler(onNodeEvent)
return ret
end
-- TextureDrawInRect
local function TextureDrawInRect()
local ret = createTestLayer("Texture2D: drawInRect",
"draws 2 textures using drawInRect")
local function draw()
-- TextureDemo:draw()
local s = cc.Director:getInstance():getWinSize()
local rect1 = cc.rect( s.width/2 - 80, 20, m_pTex1:getContentSize().width * 0.5, m_pTex1:getContentSize().height *2 )
local rect2 = cc.rect( s.width/2 + 80, s.height/2, m_pTex1:getContentSize().width * 2, m_pTex1:getContentSize().height * 0.5 )
m_pTex1:drawInRect(rect1)
m_pTex2F:drawInRect(rect2)
end
local m_pTex1 = cc.TextureCache:getInstance():addImage("Images/grossinis_sister1.png")
local m_pTex2F = cc.TextureCache:getInstance():addImage("Images/grossinis_sister2.png")
m_pTex1:retain()
m_pTex2F:retain()
local function onNodeEvent(event)
if event == "exit" then
m_pTex1:release()
m_pTex2F:release()
end
end
ret:registerScriptHandler(onNodeEvent)
return ret
end
-- --------------------------------------------------------------------
-- --
-- TextureMemoryAlloc
--
--------------------------------------------------------------------
local function TextureMemoryAlloc()
local ret = createTestLayer("Texture memory",
"Testing Texture Memory allocation. Use Instruments + VM Tracker")
local m_pBackground = nil
cc.MenuItemFont:setFontSize(24)
local function updateImage(tag,sender)
if m_pBackground ~= nil then
cclog("updateImage"..tag)
m_pBackground:removeFromParent(true)
end
cc.TextureCache:getInstance():removeUnusedTextures()
local file = ""
if tag == 0 then
file = "Images/test_1021x1024.png"
elseif tag == 1 then
file = "Images/test_1021x1024_rgba8888.pvr"
elseif tag == 2 then
file = "Images/test_1021x1024_rgb888.pvr"
elseif tag == 3 then
file = "Images/test_1021x1024_rgba4444.pvr"
elseif tag == 4 then
file = "Images/test_1021x1024_a8.pvr"
end
m_pBackground = cc.Sprite:create(file)
ret:addChild(m_pBackground, -10)
m_pBackground:setVisible(false)
local s = cc.Director:getInstance():getWinSize()
m_pBackground:setPosition(cc.p(s.width/2, s.height/2))
end
local item1 = cc.MenuItemFont:create("PNG")
item1:registerScriptTapHandler(updateImage)
item1:setTag(0)
local item2 = cc.MenuItemFont:create("RGBA8")
item2:registerScriptTapHandler(updateImage)
item2:setTag(1)
local item3 = cc.MenuItemFont:create("RGB8")
item3:registerScriptTapHandler(updateImage)
item3:setTag(2)
local item4 = cc.MenuItemFont:create("RGBA4")
item4:registerScriptTapHandler(updateImage)
item4:setTag(3)
local item5 = cc.MenuItemFont:create("A8")
item5:registerScriptTapHandler(updateImage)
item5:setTag(4)
local menu = cc.Menu:create(item1, item2, item3, item4, item5)
menu:alignItemsHorizontally()
ret:addChild(menu)
local warmup = cc.MenuItemFont:create("warm up texture")
local function changeBackgroundVisible(tag, sender)
if m_pBackground ~= nil then
cclog("changeBackgroundVisible")
m_pBackground:setVisible(true)
end
end
warmup:registerScriptTapHandler(changeBackgroundVisible)
local menu2 = cc.Menu:create(warmup)
menu2:alignItemsHorizontally()
ret:addChild(menu2)
local s = cc.Director:getInstance():getWinSize()
menu2:setPosition(cc.p(s.width/2, s.height/4))
return ret
end
-- TexturePVRv3Premult
local function TexturePVRv3Premult()
local ret = createTestLayer("PVRv3 Premult Flag",
"All images should look exactly the same")
local function transformSprite(sprite)
local fade = cc.FadeOut:create(2)
local dl = cc.DelayTime:create(2)
local fadein = tolua.cast(fade:reverse(), "FadeOut")
local seq = cc.Sequence:create(fade, fadein, dl)
local repeatAction = cc.RepeatForever:create(seq)
sprite:runAction(repeatAction)
end
local size = cc.Director:getInstance():getWinSize()
local background = cc.LayerColor:create(cc.c4b(128,128,128,255), size.width, size.height)
ret:addChild(background, -1)
-- PVR premultiplied
local pvr1 = cc.Sprite:create("Images/grossinis_sister1-testalpha_premult.pvr")
ret:addChild(pvr1, 0)
pvr1:setPosition(cc.p(size.width/4*1, size.height/2))
transformSprite(pvr1)
-- PVR non-premultiplied
local pvr2 = cc.Sprite:create("Images/grossinis_sister1-testalpha_nopremult.pvr")
ret:addChild(pvr2, 0)
pvr2:setPosition(cc.p(size.width/4*2, size.height/2))
transformSprite(pvr2)
-- PNG
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888)
cc.TextureCache:getInstance():removeTextureForKey("Images/grossinis_sister1-testalpha.png")
local png = cc.Sprite:create("Images/grossinis_sister1-testalpha.png")
ret:addChild(png, 0)
png:setPosition(cc.p(size.width/4*3, size.height/2))
transformSprite(png)
return ret
end
function Texture2dTestMain()
cclog("Texture2dTestMain")
Helper.index = 1
local scene = cc.Scene:create()
Helper.createFunctionTable = {
TextureMemoryAlloc,
TextureAlias,
TexturePVRMipMap,
TexturePVRMipMap2,
TexturePVRNonSquare,
TexturePVRNPOT4444,
TexturePVRNPOT8888,
TexturePVR,
TexturePVR2BPP,
TexturePVR2BPPv3,
TexturePVR4BPP,
TexturePVR4BPPv3,
TexturePVRII4BPPv3,
TexturePVRRGBA8888,
TexturePVRRGBA8888v3,
TexturePVRBGRA8888,
TexturePVRBGRA8888v3,
TexturePVRRGBA4444,
TexturePVRRGBA4444v3,
TexturePVRRGBA4444GZ,
TexturePVRRGBA4444CCZ,
TexturePVRRGBA5551,
TexturePVRRGBA5551v3,
TexturePVRRGB565,
TexturePVRRGB565v3,
TexturePVRRGB888,
TexturePVRRGB888v3,
TexturePVRA8,
TexturePVRA8v3,
TexturePVRI8,
TexturePVRI8v3,
TexturePVRAI88,
TexturePVRAI88v3,
TexturePVRv3Premult,
TexturePVRBadEncoding,
TexturePNG,
TextureJPEG,
TextureTIFF,
TextureWEBP,
TextureMipMap,
TexturePixelFormat,
TextureBlend,
TextureAsync,
TextureGlClamp,
TextureGlRepeat,
TextureSizeTest,
TextureCache1,
TextureDrawAtPoint,
TextureDrawInRect
}
scene:addChild(TextureMemoryAlloc())
scene:addChild(CreateBackMenuItem())
return scene
end