return vertexData;
}
+Geometry CreateQuadGeometry(void)
+{
+ PropertyBuffer vertexData = CreatePropertyBuffer();
+ const float halfQuadSize = .5f;
+ struct TexturedQuadVertex { Vector2 position; Vector2 textureCoordinates; };
+ TexturedQuadVertex texturedQuadVertexData[4] = {
+ { Vector2(-halfQuadSize, -halfQuadSize), Vector2(0.f, 0.f) },
+ { Vector2( halfQuadSize, -halfQuadSize), Vector2(1.f, 0.f) },
+ { Vector2(-halfQuadSize, halfQuadSize), Vector2(0.f, 1.f) },
+ { Vector2( halfQuadSize, halfQuadSize), Vector2(1.f, 1.f) } };
+ vertexData.SetData(texturedQuadVertexData, 4);
+
+ unsigned short indexData[6] = { 0, 3, 1, 0, 2, 3 };
+
+ Geometry geometry = Geometry::New();
+ geometry.AddVertexBuffer( vertexData );
+ geometry.SetIndexBuffer( indexData, sizeof(indexData)/sizeof(indexData[0]) );
+
+ return geometry;
+}
+
} // namespace Dali
Shader CreateShader();
TextureSet CreateTextureSet();
TextureSet CreateTextureSet( Image image );
+Geometry CreateQuadGeometry();
PropertyBuffer CreatePropertyBuffer();
}
Actor CreateRenderableActor( Image texture, const std::string& vertexShader, const std::string& fragmentShader )
{
// Create the geometry
- Geometry geometry = Geometry::QUAD();
+ Geometry geometry = CreateQuadGeometry();
// Create Shader
Shader shader = Shader::New( vertexShader, fragmentShader );
Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
if( !geometry )
{
- geometry = Geometry::QUAD();
+ geometry = RendererFactoryCache::CreateQuadGeometry();
mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
}
Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
if( !geometry )
{
- geometry = Geometry::QUAD();
+ geometry = RendererFactoryCache::CreateQuadGeometry();
mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
}
geometry = factoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
if( !geometry )
{
- geometry = Geometry::QUAD();
+ geometry = RendererFactoryCache::CreateQuadGeometry();
factoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
}
}
return mDebugRenderer;
}
+Geometry RendererFactoryCache::CreateQuadGeometry()
+{
+ const float halfWidth = 0.5f;
+ const float halfHeight = 0.5f;
+ struct QuadVertex { Vector2 position;};
+ QuadVertex quadVertexData[4] =
+ {
+ { Vector2(-halfWidth, -halfHeight) },
+ { Vector2(-halfWidth, halfHeight) },
+ { Vector2( halfWidth, -halfHeight) },
+ { Vector2( halfWidth, halfHeight) }
+ };
+
+ Property::Map quadVertexFormat;
+ quadVertexFormat["aPosition"] = Property::VECTOR2;
+ PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat );
+ quadVertices.SetData( quadVertexData, 4 );
+
+ // Create the geometry object
+ Geometry geometry = Geometry::New();
+ geometry.AddVertexBuffer( quadVertices );
+ geometry.SetGeometryType( Geometry::TRIANGLE_STRIP );
+
+ return geometry;
+}
+
SvgRasterizeThread* RendererFactoryCache::GetSVGRasterizationThread()
{
if( !mSvgRasterizeThread )
*/
void SaveShader( ShaderType type, Shader shader );
+ /*
+ * Greate the quad geometry.
+ * Quad geometry is shared by multiple kind of Renderer, so implement it in the factory-cache.
+ */
+ static Geometry CreateQuadGeometry();
+
/**
* Create the grid geometry.
* @param[in] gridSize The size of the grid.
Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY );
if( !geometry )
{
- geometry = Geometry::QUAD();
+ geometry = mFactoryCache.CreateQuadGeometry();
mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry );
}
TextureSet textureSet = TextureSet::New();
#include <dali-toolkit/devel-api/controls/renderer-factory/renderer-factory.h>
#include <dali/integration-api/debug.h>
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/controls/renderers/renderer-factory-cache.h>
+
namespace Dali
{
{
Control::OnStageConnection( depth );
- Geometry geometry = Geometry::QUAD();
+ Geometry geometry = RendererFactoryCache::CreateQuadGeometry();
Shader shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
TextureSet textureSet = TextureSet::New();