+void BorderRenderer::RequireAntiAliasing( bool antiAliasing )
+{
+ if( mAntiAliasing != antiAliasing )
+ {
+ mAntiAliasing = antiAliasing;
+ if( mImpl->mRenderer )
+ {
+ Shader borderShader( GetBorderShader() );
+ mImpl->mRenderer.SetShader( borderShader );
+ if( mAntiAliasing )
+ {
+ mImpl->mRenderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON );
+ }
+ }
+ }
+}
+
+Shader BorderRenderer::GetBorderShader()
+{
+ Shader shader;
+ if( mAntiAliasing )
+ {
+ shader = mFactoryCache.GetShader( RendererFactoryCache::BORDER_SHADER_ANTI_ALIASING );
+ if( !shader )
+ {
+ shader = Shader::New( VERTEX_SHADER_ANTI_ALIASING, FRAGMENT_SHADER_ANTI_ALIASING );
+ mFactoryCache.SaveShader( RendererFactoryCache::BORDER_SHADER_ANTI_ALIASING, shader );
+ }
+ }
+ else
+ {
+ shader = mFactoryCache.GetShader( RendererFactoryCache::BORDER_SHADER );
+ if( !shader )
+ {
+ shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
+ mFactoryCache.SaveShader( RendererFactoryCache::BORDER_SHADER, shader );
+ }
+ }
+
+ return shader;
+}
+