* Clean-up some demos to use utility function to create quad with texture coordinates
Change-Id: I35d71cabc4140bdda298c2975f1f682d72a94176
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
-#include <dali-toolkit/dali-toolkit.h>
+// EXTERNAL INCLUDES
#include <dali/devel-api/rendering/renderer.h>
-#include <dali/public-api/common/dali-common.h>
-#include <dali/integration-api/resource-policies.h>
-#include <dali/integration-api/debug.h>
-#include <iostream>
+#include <dali-toolkit/dali-toolkit.h>
+
+// INTERNAL INCLUDES
+#include "shared/utility.h"
using namespace Dali;
using namespace Dali::Toolkit;
}\n
);
-
-Geometry& QuadMesh()
-{
- static Geometry mesh;
- if( !mesh )
- {
- PropertyBuffer vertexBuffer;
- Property::Map vertexFormat;
- vertexFormat["aPosition"] = Property::VECTOR2;
- vertexFormat["aTexCoord"] = Property::VECTOR2;
-
- //Create a vertex buffer for vertex positions and texture coordinates
- vertexBuffer = PropertyBuffer::New( vertexFormat );
- vertexBuffer.SetData( gQuadWithTexture, 4u );
-
- //Create the geometry
- mesh = Geometry::New();
- mesh.AddVertexBuffer( vertexBuffer );
- mesh.SetGeometryType(Geometry::TRIANGLE_STRIP );
- }
- return mesh;
-}
-
bool gUseMesh(false);
bool gUseImageActor(false);
bool gNinePatch(false);
unsigned int gColumnsPerPage( 25 );
unsigned int gPageCount(13);
-Renderer CreateRenderer( unsigned int index )
+Renderer CreateRenderer( unsigned int index, Geometry geometry, Shader shader )
{
-
- int numImages = !gNinePatch ? NUM_IMAGES : NUM_NINEPATCH_IMAGES;
- static Renderer* renderers = new Renderer[numImages];
- if( !renderers[index] )
- {
- //Create the renderer
- Shader shader = Shader::New( VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE );
-
- const char* imagePath = !gNinePatch ? IMAGE_PATH[index] : NINEPATCH_IMAGE_PATH[index];
- Image image = ResourceImage::New(imagePath);
- TextureSet textureSet = TextureSet::New();
- textureSet.SetImage( 0u, image );
- renderers[index] = Renderer::New( QuadMesh(), shader );
- renderers[index].SetTextures( textureSet );
- renderers[index].SetProperty( Renderer::Property::BLEND_MODE, BlendMode::OFF );
- }
- return renderers[index];
-}
-
-Actor CreateMeshActor( unsigned int index)
-{
- Renderer renderer = CreateRenderer(index);
- Actor meshActor = Actor::New();
- meshActor.AddRenderer( renderer );
- return meshActor;
+ Renderer renderer = Renderer::New( geometry, shader );
+ const char* imagePath = !gNinePatch ? IMAGE_PATH[index] : NINEPATCH_IMAGE_PATH[index];
+ Texture texture = DemoHelper::LoadTexture( imagePath );
+ TextureSet textureSet = TextureSet::New();
+ textureSet.SetTexture( 0u, texture );
+ renderer.SetTextures( textureSet );
+ renderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::OFF );
+ return renderer;
}
}
void CreateMeshActors()
{
+ unsigned int numImages = !gNinePatch ? NUM_IMAGES : NUM_NINEPATCH_IMAGES;
+
+ //Create all the renderers
+ std::vector<Renderer> renderers( numImages );
+ Shader shader = Shader::New( VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE );
+ Geometry geometry = DemoHelper::CreateTexturedQuad();
+ for( unsigned int i(0); i<numImages; ++i )
+ {
+ renderers[i] = CreateRenderer( i, geometry, shader );
+ }
+
+ //Create the actors
Stage stage = Stage::GetCurrent();
unsigned int actorCount(mRowsPerPage*mColumnsPerPage * mPageCount);
mActor.resize(actorCount);
for( size_t i(0); i<actorCount; ++i )
{
- size_t numImages = !gNinePatch ? NUM_IMAGES : NUM_NINEPATCH_IMAGES;
- mActor[i] = CreateMeshActor(i % numImages);
+ mActor[i] = Actor::New();
+ mActor[i].AddRenderer( renderers[i % numImages] );
mActor[i].SetSize(0.0f,0.0f,0.0f);
-
stage.Add(mActor[i]);
}
}
*
*/
+// EXTERNAL INCLUDES
+#include <dali/dali.h>
+#include <dali/devel-api/rendering/renderer.h>
#include <dali-toolkit/dali-toolkit.h>
+// INTERNAL INCLUDES
+#include "shared/utility.h"
+
using namespace Dali;
using Dali::Toolkit::TextLabel;
+namespace
+{
+
const char* IMAGE_FILENAME_ETC = DEMO_IMAGE_DIR "tx-etc1.ktx";
const char* IMAGE_FILENAME_ASTC_LINEAR = DEMO_IMAGE_DIR "tx-astc-4x4-linear.ktx";
const char* IMAGE_FILENAME_ASTC_LINEAR_NATIVE = DEMO_IMAGE_DIR "tx-astc-4x4-linear-native.astc";
+
+static const char* VERTEX_SHADER_TEXTURE = DALI_COMPOSE_SHADER(
+ attribute mediump vec2 aPosition;\n
+ attribute mediump vec2 aTexCoord;\n
+ uniform mediump mat4 uMvpMatrix;\n
+ uniform mediump vec3 uSize;\n
+ varying mediump vec2 vTexCoord;\n
+ void main()\n
+ {\n
+ vec4 position = vec4(aPosition,0.0,1.0)*vec4(uSize,1.0);\n
+ gl_Position = uMvpMatrix * position;\n
+ vTexCoord = aTexCoord;\n
+ }\n
+);
+
+static const char* FRAGMENT_SHADER_TEXTURE = DALI_COMPOSE_SHADER(
+ uniform lowp vec4 uColor;\n
+ uniform sampler2D sTexture;\n
+ varying mediump vec2 vTexCoord;\n
+
+ void main()\n
+ {\n
+ gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;\n
+ }\n
+);
+
+/**
+ * @brief Create a renderer to render an image and adds it to an actor
+ * @param[in] imagePath The path where the image file is located
+ * @param[in] actor The actor that will be used to render the image
+ * @param[in[ geometry The geometry to use
+ * @param[in] shader The shader to use
+ */
+void AddImage( const char*imagePath, Actor& actor, Geometry& geometry, Shader& shader )
+{
+ //Load the texture
+ Texture texture = DemoHelper::LoadTexture( imagePath );
+ TextureSet textureSet = TextureSet::New();
+ textureSet.SetTexture( 0u, texture );
+
+ //Create the renderer
+ Renderer renderer = Renderer::New( geometry, shader );
+ renderer.SetTextures( textureSet );
+
+ //Set actor size and add the renderer
+ actor.SetSize( texture.GetWidth(), texture.GetHeight() );
+ actor.AddRenderer( renderer );
+}
+
+}
/**
* @brief This example shows 3 images, each of a different compressed texture type.
* If built and run on a OpenGL ES 3.1 compatable target, then all 3 images will display.
table.AddChild( textLabel, Toolkit::TableView::CellPosition( 2u, 0u ) );
table.SetCellAlignment( Toolkit::TableView::CellPosition( 2u, 0u ), HorizontalAlignment::LEFT, VerticalAlignment::CENTER );
- // Add images.
- Toolkit::ImageView imageView = Toolkit::ImageView::New( ResourceImage::New( IMAGE_FILENAME_ETC ) );
- imageView.SetAnchorPoint( AnchorPoint::CENTER );
- imageView.SetParentOrigin( ParentOrigin::CENTER );
- table.AddChild( imageView, Toolkit::TableView::CellPosition( 0u, 1u ) );
-
- imageView = Toolkit::ImageView::New( ResourceImage::New( IMAGE_FILENAME_ASTC_LINEAR ) );
- imageView.SetAnchorPoint( AnchorPoint::CENTER );
- imageView.SetParentOrigin( ParentOrigin::CENTER );
- table.AddChild( imageView, Toolkit::TableView::CellPosition( 1u, 1u ) );
+ //Create the geometry and the shader renderers will use
+ Geometry geometry = DemoHelper::CreateTexturedQuad();
+ Shader shader = Shader::New( VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE );
- imageView = Toolkit::ImageView::New( ResourceImage::New( IMAGE_FILENAME_ASTC_LINEAR_NATIVE ) );
- imageView.SetAnchorPoint( AnchorPoint::CENTER );
- imageView.SetParentOrigin( ParentOrigin::CENTER );
- table.AddChild( imageView, Toolkit::TableView::CellPosition( 2u, 1u ) );
+ // Add images.
+ Actor actor = Actor::New();
+ actor.SetAnchorPoint( AnchorPoint::CENTER );
+ actor.SetParentOrigin( ParentOrigin::CENTER );
+ AddImage( IMAGE_FILENAME_ETC, actor, geometry, shader );
+ table.AddChild( actor, Toolkit::TableView::CellPosition( 0u, 1u ) );
+ table.SetCellAlignment( Toolkit::TableView::CellPosition( 0u, 1u ), HorizontalAlignment::CENTER, VerticalAlignment::CENTER );
+
+ actor = Actor::New();
+ actor.SetAnchorPoint( AnchorPoint::CENTER );
+ actor.SetParentOrigin( ParentOrigin::CENTER );
+ AddImage( IMAGE_FILENAME_ASTC_LINEAR, actor, geometry, shader );
+ table.AddChild( actor, Toolkit::TableView::CellPosition( 1u, 1u ) );
+ table.SetCellAlignment( Toolkit::TableView::CellPosition( 1u, 1u ), HorizontalAlignment::CENTER, VerticalAlignment::CENTER );
+
+ actor = Actor::New();
+ actor.SetAnchorPoint( AnchorPoint::CENTER );
+ actor.SetParentOrigin( ParentOrigin::CENTER );
+ AddImage( IMAGE_FILENAME_ASTC_LINEAR_NATIVE, actor, geometry, shader );
+ table.AddChild( actor, Toolkit::TableView::CellPosition( 2u, 1u ) );
+ table.SetCellAlignment( Toolkit::TableView::CellPosition( 2u, 1u ), HorizontalAlignment::CENTER, VerticalAlignment::CENTER );
stage.Add( table );
- // Respond to a click anywhere on the stage
+ // Respond to touch and key signals
stage.GetRootLayer().TouchSignal().Connect( this, &CompressedTextureFormatsController::OnTouch );
+ stage.KeyEventSignal().Connect(this, &CompressedTextureFormatsController::OnKeyEvent);
}
bool OnTouch( Actor actor, const TouchData& touch )
return true;
}
+ void OnKeyEvent(const KeyEvent& event)
+ {
+ if(event.state == KeyEvent::Down)
+ {
+ if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+ {
+ mApplication.Quit();
+ }
+ }
+ }
+
private:
Application& mApplication;
};
}
);
-Geometry CreateGeometry()
-{
- // Create vertices
- 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) } };
-
- Property::Map texturedQuadVertexFormat;
- texturedQuadVertexFormat["aPosition"] = Property::VECTOR2;
- texturedQuadVertexFormat["aTexCoord"] = Property::VECTOR2;
- PropertyBuffer texturedQuadVertices = PropertyBuffer::New( texturedQuadVertexFormat );
- texturedQuadVertices.SetData( texturedQuadVertexData, 4 );
-
- // Create indices
- unsigned short indexData[6] = { 0, 3, 1, 0, 2, 3 };
-
- // Create the geometry object
- Geometry texturedQuadGeometry = Geometry::New();
- texturedQuadGeometry.AddVertexBuffer( texturedQuadVertices );
- texturedQuadGeometry.SetIndexBuffer( &indexData[0], sizeof(indexData)/sizeof(unsigned short) );
-
- return texturedQuadGeometry;
-}
-
} // anonymous namespace
// This example shows how to use a simple mesh
application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );
mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
- mGeometry = CreateGeometry();
+ mGeometry = DemoHelper::CreateTexturedQuad();
TextureSet firstTextureSet;
*
*/
+// EXTERNAL INCLUDES
#include <dali/dali.h>
+#include <dali/devel-api/images/native-image-interface-extension.h>
+#include <dali/devel-api/rendering/renderer.h>
+#include <dali/devel-api/rendering/frame-buffer.h>
#include <dali-toolkit/dali-toolkit.h>
+#include <cstring>
+
+// INTERNAL INCLUDES
+#include "shared/utility.h"
using namespace Dali;
using namespace Toolkit;
namespace
{
- const std::string JPG_FILENAME = DEMO_IMAGE_DIR "gallery-medium-4.jpg";
+
+/**
+ * @brief Creates a shader used to render a native image
+ * @param[in] nativeImageInterface The native image interface
+ * @return A shader to render the native image
+ */
+Shader CreateShader( NativeImageInterface& nativeImageInterface )
+{
+ static const char* DEFAULT_SAMPLER_TYPENAME = "sampler2D";
+
+ static const char* VERTEX_SHADER_TEXTURE = DALI_COMPOSE_SHADER(
+ attribute mediump vec2 aPosition;\n
+ attribute mediump vec2 aTexCoord;\n
+ uniform mediump mat4 uMvpMatrix;\n
+ uniform mediump vec3 uSize;\n
+ varying mediump vec2 vTexCoord;\n
+ void main()\n
+ {\n
+ vec4 position = vec4(aPosition,0.0,1.0)*vec4(uSize,1.0);\n
+ gl_Position = uMvpMatrix * position;\n
+ vTexCoord = aTexCoord;\n
+ }\n
+ );
+
+ static const char* FRAGMENT_SHADER_TEXTURE = DALI_COMPOSE_SHADER(
+ uniform lowp vec4 uColor;\n
+ uniform sampler2D sTexture;\n
+ varying mediump vec2 vTexCoord;\n
+
+ void main()\n
+ {\n
+ gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;\n
+ }\n
+ );
+
+ NativeImageInterface::Extension* extension( nativeImageInterface.GetExtension() );
+ if( extension )
+ {
+ std::string fragmentShader;
+
+ //Get custom fragment shader prefix
+ const char* fragmentPreFix = extension->GetCustomFragmentPreFix();
+ if( fragmentPreFix )
+ {
+ fragmentShader = fragmentPreFix;
+ fragmentShader += FRAGMENT_SHADER_TEXTURE;
+ }
+ else
+ {
+ fragmentShader = FRAGMENT_SHADER_TEXTURE;
+ }
+
+ //Get custom sampler type name
+ const char* customSamplerTypename = extension->GetCustomSamplerTypename();
+ if( customSamplerTypename )
+ {
+ fragmentShader.replace( fragmentShader.find( DEFAULT_SAMPLER_TYPENAME ), strlen(DEFAULT_SAMPLER_TYPENAME), customSamplerTypename );
+ }
+
+ return Shader::New( VERTEX_SHADER_TEXTURE, fragmentShader );
+ }
+ else
+ {
+ return Shader::New( VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE );
+ }
+}
+
+/**
+ * @brief Creates an actor to render a native image
+ * @param[in] texture The texture creates from a native image
+ * @param[in] nativeImageInterface The native image interface used to create the texture
+ * @return An actor that renders the texture
+ */
+Actor CreateNativeActor( Texture texture, NativeImageInterface& nativeImageInterface )
+{
+ Actor actor = Actor::New();
+ Geometry geometry = DemoHelper::CreateTexturedQuad();
+ Shader shader = CreateShader(nativeImageInterface);
+ Renderer renderer = Renderer::New( geometry, shader );
+ TextureSet textureSet = TextureSet::New();
+ textureSet.SetTexture( 0u, texture );
+ renderer.SetTextures( textureSet );
+
+ actor.AddRenderer( renderer );
+ actor.SetSize( texture.GetWidth(), texture.GetHeight() );
+ return actor;
+}
+
+const std::string JPG_FILENAME = DEMO_IMAGE_DIR "gallery-medium-4.jpg";
}
// This example shows how to create and use a NativeImageSource as the target of the render task.
animation.Play();
// create a offscreen renderer task to render content into the native image source
- FrameBufferImage targetBuffer = FrameBufferImage::New( *nativeImageSourcePtr );
+ Texture nativeTexture = Texture::New( *nativeImageSourcePtr );
+ FrameBuffer targetBuffer = FrameBuffer::New( nativeTexture.GetWidth(), nativeTexture.GetHeight(), FrameBuffer::COLOR );
+ targetBuffer.AttachColorTexture( nativeTexture );
CameraActor cameraActor = CameraActor::New(imageSize);
cameraActor.SetParentOrigin(ParentOrigin::TOP_CENTER);
mOffscreenRenderTask.SetClearEnabled(true);
mOffscreenRenderTask.SetCameraActor(cameraActor);
mOffscreenRenderTask.GetCameraActor().SetInvertYAxis(true);
- mOffscreenRenderTask.SetTargetFrameBuffer( targetBuffer );
+ mOffscreenRenderTask.SetFrameBuffer( targetBuffer );
mOffscreenRenderTask.SetRefreshRate( RenderTask::REFRESH_ALWAYS );
// Display the native image on the screen
- NativeImage nativeImage = NativeImage::New( *nativeImageSourcePtr );
- ImageView nativeImageView = ImageView::New( nativeImage );
- nativeImageView.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
- nativeImageView.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
- stage.Add( nativeImageView );
+ Actor nativeImageActor = CreateNativeActor( nativeTexture, *nativeImageSourcePtr );
+ nativeImageActor.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
+ nativeImageActor.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
+ stage.Add( nativeImageActor );
TextLabel textLabel1 = TextLabel::New( "Resource Image" );
textLabel1.SetParentOrigin( ParentOrigin::TOP_CENTER );
textLabel1.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
- nativeImageView.Add( textLabel1 );
+ nativeImageActor.Add( textLabel1 );
TextLabel textLabel2 = TextLabel::New( "Native Image" );
textLabel2.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
textLabel2.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
- nativeImageView.Add( textLabel2 );
+ nativeImageActor.Add( textLabel2 );
return false;
}
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
-#include <dali-toolkit/dali-toolkit.h>
#include <dali/devel-api/rendering/renderer.h>
-#include <dali/devel-api/rendering/sampler.h>
-#include <dali/public-api/common/dali-common.h>
-#include <dali/integration-api/resource-policies.h>
-#include <dali/integration-api/debug.h>
-#include <iostream>
+#include <dali-toolkit/dali-toolkit.h>
#include "shared/utility.h"
}\n
);
-
-Geometry& QuadMesh()
-{
- static Geometry mesh;
- if( !mesh )
- {
- PropertyBuffer vertexBuffer;
- Property::Map vertexFormat;
- vertexFormat["aPosition"] = Property::VECTOR2;
- vertexFormat["aTexCoord"] = Property::VECTOR2;
-
- //Create a vertex buffer for vertex positions and texture coordinates
- vertexBuffer = PropertyBuffer::New( vertexFormat );
- vertexBuffer.SetData( gQuadWithTexture, 4u );
-
- //Create the geometry
- mesh = Geometry::New();
- mesh.AddVertexBuffer( vertexBuffer );
- mesh.SetGeometryType( Geometry::TRIANGLE_STRIP );
- }
- return mesh;
-}
-
bool gUseMesh(false);
bool gNinePatch(false);
unsigned int gRowsPerPage(15);
unsigned int gPageCount(10);
float gDuration(10.0f);
-Renderer CreateRenderer( unsigned int index )
+Renderer CreateRenderer( unsigned int index, Geometry geometry, Shader shader )
{
-
- int numImages = !gNinePatch ? NUM_IMAGES : NUM_NINEPATCH_IMAGES;
- static Renderer* renderers = new Renderer[numImages];
- if( !renderers[index] )
- {
- //Create the renderer
- Shader shader = Shader::New( VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE );
-
- const char* imagePath = !gNinePatch ? IMAGE_PATH[index] : NINEPATCH_IMAGE_PATH[index];
- Texture texture = DemoHelper::LoadTexture( imagePath );
-
- TextureSet textureSet = TextureSet::New();
- textureSet.SetTexture( 0u, texture );
- renderers[index] = Renderer::New( QuadMesh(), shader );
- renderers[index].SetTextures( textureSet );
- renderers[index].SetProperty( Renderer::Property::BLEND_MODE, BlendMode::OFF );
- }
- return renderers[index];
+ Renderer renderer = Renderer::New( geometry, shader );
+ const char* imagePath = !gNinePatch ? IMAGE_PATH[index] : NINEPATCH_IMAGE_PATH[index];
+ Texture texture = DemoHelper::LoadTexture( imagePath );
+ TextureSet textureSet = TextureSet::New();
+ textureSet.SetTexture( 0u, texture );
+ renderer.SetTextures( textureSet );
+ renderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::OFF );
+ return renderer;
}
-Actor CreateMeshActor( unsigned int index)
-{
- Renderer renderer = CreateRenderer( index );
- Actor meshActor = Actor::New();
- meshActor.AddRenderer( renderer );
- return meshActor;
-}
}
// Test application to compare performance between ImageActor and ImageView
void CreateMeshActors()
{
- Stage stage = Stage::GetCurrent();
+ unsigned int numImages = !gNinePatch ? NUM_IMAGES : NUM_NINEPATCH_IMAGES;
- unsigned int actorCount( mRowsPerPage * mColumnsPerPage * mPageCount );
- mActor.resize( actorCount );
+ //Create all the renderers
+ std::vector<Renderer> renderers( numImages );
+ Shader shader = Shader::New( VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE );
+ Geometry geometry = DemoHelper::CreateTexturedQuad();
+ for( unsigned int i(0); i<numImages; ++i )
+ {
+ renderers[i] = CreateRenderer( i, geometry, shader );
+ }
+ //Create the actors
+ Stage stage = Stage::GetCurrent();
+ unsigned int actorCount(mRowsPerPage*mColumnsPerPage * mPageCount);
+ mActor.resize(actorCount);
for( size_t i(0); i<actorCount; ++i )
{
- size_t numImages = !gNinePatch ? NUM_IMAGES : NUM_NINEPATCH_IMAGES;
- mActor[i] = CreateMeshActor( i % numImages );
+ mActor[i] = Actor::New();
+ mActor[i].AddRenderer( renderers[i % numImages] );
mActor[i].SetSize(0.0f,0.0f,0.0f);
-
- mParent.Add( mActor[i] );
+ mParent.Add(mActor[i]);
}
}
}
);
-Geometry CreateGeometry()
-{
- // Create vertices
- 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) } };
-
- Property::Map texturedQuadVertexFormat;
- texturedQuadVertexFormat["aPosition"] = Property::VECTOR2;
- texturedQuadVertexFormat["aTexCoord"] = Property::VECTOR2;
- PropertyBuffer texturedQuadVertices = PropertyBuffer::New( texturedQuadVertexFormat );
- texturedQuadVertices.SetData( texturedQuadVertexData, 4 );
-
- // Create indices
- unsigned short indexData[6] = { 0, 3, 1, 0, 2, 3 };
-
- // Create the geometry object
- Geometry texturedQuadGeometry = Geometry::New();
- texturedQuadGeometry.AddVertexBuffer( texturedQuadVertices );
- texturedQuadGeometry.SetIndexBuffer( &indexData[0], sizeof(indexData)/sizeof(indexData[0]) );
-
- return texturedQuadGeometry;
-}
-
/**
* Sinusoidal curve starting at zero with 2 cycles
*/
mTextureSet2 = TextureSet::New();
mTextureSet2.SetTexture( 0u, texture2 );
- mGeometry = CreateGeometry();
+ mGeometry = DemoHelper::CreateTexturedQuad();
mRenderer = Renderer::New( mGeometry, mShader );
mRenderer.SetTextures( mTextureSet1 );
#include <dali/dali.h>
#include <dali/devel-api/images/atlas.h>
+#include <dali/devel-api/rendering/geometry.h>
#include <dali/devel-api/rendering/texture.h>
#include <dali/devel-api/adaptor-framework/bitmap-loader.h>
return LoadTexture( imagePath, Dali::ImageDimensions( stageSize.x, stageSize.y ), Dali::FittingMode::SCALE_TO_FILL, Dali::SamplingMode::BOX_THEN_LINEAR );
}
+Dali::Geometry CreateTexturedQuad()
+{
+ struct Vertex
+ {
+ Dali::Vector2 position;
+ Dali::Vector2 texCoord;
+ };
+
+ static const Vertex data[] = {{ Dali::Vector2( -0.5f, -0.5f ), Dali::Vector2( 0.0f, 0.0f ) },
+ { Dali::Vector2( 0.5f, -0.5f ), Dali::Vector2( 1.0f, 0.0f ) },
+ { Dali::Vector2( -0.5f, 0.5f ), Dali::Vector2( 0.0f, 1.0f ) },
+ { Dali::Vector2( 0.5f, 0.5f ), Dali::Vector2( 1.0f, 1.0f ) }};
+
+ Dali::PropertyBuffer vertexBuffer;
+ Dali::Property::Map vertexFormat;
+ vertexFormat["aPosition"] = Dali::Property::VECTOR2;
+ vertexFormat["aTexCoord"] = Dali::Property::VECTOR2;
+
+ //Create a vertex buffer for vertex positions and texture coordinates
+ vertexBuffer = Dali::PropertyBuffer::New( vertexFormat );
+ vertexBuffer.SetData( data, 4u );
+
+ //Create the geometry
+ Dali::Geometry geometry = Dali::Geometry::New();
+ geometry.AddVertexBuffer( vertexBuffer );
+ geometry.SetGeometryType(Dali::Geometry::TRIANGLE_STRIP );
+
+ return geometry;
+}
} // DemoHelper
#endif // __DALI_DEMO_HELPER_VIEW_H__