From c8ed20c22ca545146be5fbde4c36b35c76daac9b Mon Sep 17 00:00:00 2001 From: Richard Underhill Date: Tue, 23 Jun 2015 13:16:03 +0100 Subject: [PATCH] Eliminate shader creation per Atlas. Change-Id: I13f2f215aa841be3b548f34d8172e4ba0e740626 Signed-off-by: Richard Underhill --- .../internal/atlas-manager/atlas-manager-impl.cpp | 15 ++++----------- dali-toolkit/internal/atlas-manager/atlas-manager-impl.h | 3 +++ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp b/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp index 9ef43a9..15baf37 100644 --- a/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp +++ b/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp @@ -74,7 +74,7 @@ namespace } ); - const char* FRAGMENT_SHADER_BGRA = MAKE_SHADER( + const char* FRAGMENT_SHADER_RGBA = MAKE_SHADER( uniform sampler2D sTexture; varying mediump vec2 vTexCoord; @@ -94,6 +94,8 @@ AtlasManager::AtlasManager() mNewAtlasSize.mHeight = DEFAULT_ATLAS_HEIGHT; mNewAtlasSize.mBlockWidth = DEFAULT_BLOCK_WIDTH; mNewAtlasSize.mBlockHeight = DEFAULT_BLOCK_HEIGHT; + mShaderL8 = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_L8 ); + mShaderRgba = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_RGBA ); } AtlasManagerPtr AtlasManager::New() @@ -173,16 +175,7 @@ Toolkit::AtlasManager::AtlasId AtlasManager::CreateAtlas( const Toolkit::AtlasMa Sampler sampler = Sampler::New( atlas, "sTexture" ); sampler.SetProperty( Sampler::Property::AFFECTS_TRANSPARENCY, true ); - Shader shader; - if ( pixelformat == Pixel::BGRA8888 ) - { - shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_BGRA ); - } - else - { - shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_L8 ); - } - atlasDescriptor.mMaterial = Material::New( shader ); + atlasDescriptor.mMaterial = Material::New( pixelformat == Pixel::L8 ? mShaderL8 : mShaderRgba ); atlasDescriptor.mMaterial.AddSampler( sampler ); atlasDescriptor.mSampler = sampler; atlasDescriptor.mMaterial.SetBlendMode( BlendingMode::ON ); diff --git a/dali-toolkit/internal/atlas-manager/atlas-manager-impl.h b/dali-toolkit/internal/atlas-manager/atlas-manager-impl.h index a24bba0..5336e1b 100644 --- a/dali-toolkit/internal/atlas-manager/atlas-manager-impl.h +++ b/dali-toolkit/internal/atlas-manager/atlas-manager-impl.h @@ -224,6 +224,9 @@ private: void OnUpload( Image image ); + Shader mShaderL8; + Shader mShaderRgba; + }; } // namespace Internal -- 2.7.4