X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Frendering-textured-cube%2Frendering-textured-cube.cpp;h=646e296429ef4f9defb43e60db9992573ef97dc8;hb=422d91612187d1a575b3ed00f7d33cb2d19e02ed;hp=6230e0b2a4c0c8059aa1a74056483d95dac3fa74;hpb=a284a43f0bb9f45e37809d9778d3c774a5169d50;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/rendering-textured-cube/rendering-textured-cube.cpp b/examples/rendering-textured-cube/rendering-textured-cube.cpp index 6230e0b..646e296 100644 --- a/examples/rendering-textured-cube/rendering-textured-cube.cpp +++ b/examples/rendering-textured-cube/rendering-textured-cube.cpp @@ -15,8 +15,11 @@ * */ -#include #include +#include + +#include "generated/rendering-textured-cube-vert.h" +#include "generated/rendering-textured-cube-frag.h" using namespace Dali; using namespace Toolkit; @@ -24,54 +27,20 @@ using namespace Toolkit; namespace { -/* - * Vertex shader - */ -const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( -attribute mediump vec3 aPosition;\n // DALi shader builtin -attribute mediump vec2 aTexCoord;\n // DALi shader builtin -uniform mediump mat4 uMvpMatrix;\n // DALi shader builtin -uniform mediump vec3 uSize;\n // DALi shader builtin -\n -varying mediump vec2 vTexCoord;\n -void main()\n -{\n - mediump vec4 vertexPosition = vec4(aPosition, 1.0);\n - vertexPosition.xyz *= uSize;\n - vTexCoord = aTexCoord;\n - gl_Position = uMvpMatrix * vertexPosition;\n -}\n -); - -/* - * Fragment shader - */ -const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( -uniform sampler2D uTexture;\n -\n -varying mediump vec2 vTexCoord;\n -void main()\n -{\n - mediump vec4 texColor = texture2D( uTexture, vTexCoord );\n - gl_FragColor = texColor;\n -}\n -); - const char* TEXTURE_URL = DEMO_IMAGE_DIR "wood.png"; -} +} // namespace // This example shows how to create textured cube // class TexturedCubeController : public ConnectionTracker { public: - - TexturedCubeController( Application& application ) - : mApplication( application ) + TexturedCubeController(Application& application) + : mApplication(application) { // Connect to the Application's Init signal - mApplication.InitSignal().Connect( this, &TexturedCubeController::Create ); + mApplication.InitSignal().Connect(this, &TexturedCubeController::Create); } ~TexturedCubeController() @@ -80,11 +49,11 @@ public: } // The Init signal is received once (only) during the Application lifetime - void Create( Application& application ) + void Create(Application& application) { // Get a handle to the window Window window = application.GetWindow(); - window.SetBackgroundColor( Color::WHITE ); + window.SetBackgroundColor(Color::WHITE); // Step 1. Create shader CreateCubeShader(); @@ -105,13 +74,13 @@ public: PlayAnimation(); // Respond to a click anywhere on the window - window.GetRootLayer().TouchSignal().Connect( this, &TexturedCubeController::OnTouch ); + window.GetRootLayer().TouchedSignal().Connect(this, &TexturedCubeController::OnTouch); // Respond to key events - window.KeyEventSignal().Connect( this, &TexturedCubeController::OnKeyEvent ); + window.KeyEventSignal().Connect(this, &TexturedCubeController::OnKeyEvent); } - bool OnTouch( Actor actor, const TouchEvent& touch ) + bool OnTouch(Actor actor, const TouchEvent& touch) { // quit the application mApplication.Quit(); @@ -124,11 +93,11 @@ public: * Will use this to quit the application if Back or the Escape key is received * @param[in] event The key event information */ - void OnKeyEvent( const KeyEvent& event ) + void OnKeyEvent(const KeyEvent& event) { - if( event.GetState() == KeyEvent::Down ) + if(event.GetState() == KeyEvent::DOWN) { - if ( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) ) + if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) { mApplication.Quit(); } @@ -149,80 +118,68 @@ public: }; Vertex vertices[] = { - { Vector3( 1.0f,-1.0f,-1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f, 1.0f,-1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f, 1.0f,-1.0f ), Vector2( 0.0, 1.0 ) }, - { Vector3( -1.0f, 1.0f, 1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( 1.0f,-1.0f, 1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f, 1.0f, 1.0f ), Vector2( 0.0, 1.0 ) }, - { Vector3( 1.0f, 1.0f, 1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( 1.0f,-1.0f,-1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f, 1.0f,-1.0f ), Vector2( 0.0, 1.0 ) }, - { Vector3( 1.0f,-1.0f, 1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f,-1.0f,-1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f,-1.0f,-1.0f ), Vector2( 0.0, 1.0 ) }, - { Vector3( -1.0f,-1.0f,-1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f, 1.0f, 1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( -1.0f, 1.0f,-1.0f ), Vector2( 0.0, 1.0 ) }, - { Vector3( 1.0f, 1.0f,-1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f, 1.0f, 1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f, 1.0f, 1.0f ), Vector2( 0.0, 1.0 ) }, - { Vector3( 1.0f,-1.0f,-1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f,-1.0f,-1.0f ), Vector2( 1.0, 0.0 ) }, - { Vector3( -1.0f, 1.0f,-1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( -1.0f, 1.0f, 1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f,-1.0f, 1.0f ), Vector2( 1.0, 0.0 ) }, - { Vector3( 1.0f,-1.0f, 1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f, 1.0f, 1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( 1.0f,-1.0f, 1.0f ), Vector2( 1.0, 0.0 ) }, - { Vector3( 1.0f,-1.0f,-1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f,-1.0f, 1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f,-1.0f, 1.0f ), Vector2( 1.0, 0.0 ) }, - { Vector3( -1.0f,-1.0f,-1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( -1.0f,-1.0f,-1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f,-1.0f, 1.0f ), Vector2( 1.0, 0.0 ) }, - { Vector3( -1.0f, 1.0f, 1.0f ), Vector2( 0.0, 0.0 ) }, - { Vector3( 1.0f, 1.0f,-1.0f ), Vector2( 1.0, 1.0 ) }, - { Vector3( -1.0f, 1.0f,-1.0f ), Vector2( 1.0, 0.0 ) }, - { Vector3( -1.0f, 1.0f, 1.0f ), Vector2( 0.0, 0.0 ) }, + {Vector3(1.0f, -1.0f, -1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, 1.0f, -1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, 1.0f, -1.0f), Vector2(0.0, 1.0)}, + {Vector3(-1.0f, 1.0f, 1.0f), Vector2(1.0, 1.0)}, + {Vector3(1.0f, -1.0f, 1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, 1.0f, 1.0f), Vector2(0.0, 1.0)}, + {Vector3(1.0f, 1.0f, 1.0f), Vector2(1.0, 1.0)}, + {Vector3(1.0f, -1.0f, -1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, 1.0f, -1.0f), Vector2(0.0, 1.0)}, + {Vector3(1.0f, -1.0f, 1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, -1.0f, -1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, -1.0f, -1.0f), Vector2(0.0, 1.0)}, + {Vector3(-1.0f, -1.0f, -1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, 1.0f, 1.0f), Vector2(0.0, 0.0)}, + {Vector3(-1.0f, 1.0f, -1.0f), Vector2(0.0, 1.0)}, + {Vector3(1.0f, 1.0f, -1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, 1.0f, 1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, 1.0f, 1.0f), Vector2(0.0, 1.0)}, + {Vector3(1.0f, -1.0f, -1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, -1.0f, -1.0f), Vector2(1.0, 0.0)}, + {Vector3(-1.0f, 1.0f, -1.0f), Vector2(0.0, 0.0)}, + {Vector3(-1.0f, 1.0f, 1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, -1.0f, 1.0f), Vector2(1.0, 0.0)}, + {Vector3(1.0f, -1.0f, 1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, 1.0f, 1.0f), Vector2(1.0, 1.0)}, + {Vector3(1.0f, -1.0f, 1.0f), Vector2(1.0, 0.0)}, + {Vector3(1.0f, -1.0f, -1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, -1.0f, 1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, -1.0f, 1.0f), Vector2(1.0, 0.0)}, + {Vector3(-1.0f, -1.0f, -1.0f), Vector2(0.0, 0.0)}, + {Vector3(-1.0f, -1.0f, -1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, -1.0f, 1.0f), Vector2(1.0, 0.0)}, + {Vector3(-1.0f, 1.0f, 1.0f), Vector2(0.0, 0.0)}, + {Vector3(1.0f, 1.0f, -1.0f), Vector2(1.0, 1.0)}, + {Vector3(-1.0f, 1.0f, -1.0f), Vector2(1.0, 0.0)}, + {Vector3(-1.0f, 1.0f, 1.0f), Vector2(0.0, 0.0)}, }; - VertexBuffer vertexBuffer = VertexBuffer::New( Property::Map() - .Add( "aPosition", Property::VECTOR3 ) - .Add( "aTexCoord", Property::VECTOR2 ) ); - vertexBuffer.SetData( vertices, sizeof(vertices) / sizeof(Vertex) ); + VertexBuffer vertexBuffer = VertexBuffer::New(Property::Map() + .Add("aPosition", Property::VECTOR3) + .Add("aTexCoord", Property::VECTOR2)); + vertexBuffer.SetData(vertices, sizeof(vertices) / sizeof(Vertex)); // create indices const unsigned short INDEX_CUBE[] = { - 2, 1, 0, - 5, 4, 3, - 8, 7, 6, - 11, 10, 9, - 14, 13, 12, - 17, 16, 15, - 20, 19, 18, - 23, 22, 21, - 26, 25, 24, - 29, 28, 27, - 32, 31, 30, - 35, 34, 33 - }; + 2, 1, 0, 5, 4, 3, 8, 7, 6, 11, 10, 9, 14, 13, 12, 17, 16, 15, 20, 19, 18, 23, 22, 21, 26, 25, 24, 29, 28, 27, 32, 31, 30, 35, 34, 33}; mGeometry = Geometry::New(); - mGeometry.AddVertexBuffer( vertexBuffer ); - mGeometry.SetIndexBuffer( INDEX_CUBE, - sizeof(INDEX_CUBE)/sizeof(INDEX_CUBE[0]) ); - mGeometry.SetType( Geometry::TRIANGLES ); + mGeometry.AddVertexBuffer(vertexBuffer); + mGeometry.SetIndexBuffer(INDEX_CUBE, + sizeof(INDEX_CUBE) / sizeof(INDEX_CUBE[0])); + mGeometry.SetType(Geometry::TRIANGLES); } /** - * Creates a shader using inlined variable VERTEX_SHADER and FRAGMENT_SHADER + * Creates a shader using SHADER_RENDERING_TEXTURED_CUBE_VERT and SHADER_RENDERING_TEXTURED_CUBE_FRAG * * Shaders are very basic and all they do is transforming vertices and sampling * a texture. */ void CreateCubeShader() { - mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); + mShader = Shader::New(SHADER_RENDERING_TEXTURED_CUBE_VERT, SHADER_RENDERING_TEXTURED_CUBE_FRAG); } /** @@ -233,14 +190,14 @@ public: void CreateTexture() { // Load image from file - PixelData pixels = SyncImageLoader::Load( TEXTURE_URL ); + PixelData pixels = SyncImageLoader::Load(TEXTURE_URL); - Texture texture = Texture::New( TextureType::TEXTURE_2D, pixels.GetPixelFormat(), pixels.GetWidth(), pixels.GetHeight() ); - texture.Upload( pixels, 0, 0, 0, 0, pixels.GetWidth(), pixels.GetHeight() ); + Texture texture = Texture::New(TextureType::TEXTURE_2D, pixels.GetPixelFormat(), pixels.GetWidth(), pixels.GetHeight()); + texture.Upload(pixels, 0, 0, 0, 0, pixels.GetWidth(), pixels.GetHeight()); // create TextureSet mTextureSet = TextureSet::New(); - mTextureSet.SetTexture( 0, texture ); + mTextureSet.SetTexture(0, texture); } /** @@ -248,12 +205,12 @@ public: */ void CreateRenderer() { - mRenderer = Renderer::New( mGeometry, mShader ); - mRenderer.SetTextures( mTextureSet ); + mRenderer = Renderer::New(mGeometry, mShader); + mRenderer.SetTextures(mTextureSet); // Face culling is enabled to hide the backwards facing sides of the cube // This is sufficient to render a single object; for more complex scenes depth-testing might be required - mRenderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK ); + mRenderer.SetProperty(Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK); } /** @@ -264,13 +221,13 @@ public: Window window = mApplication.GetWindow(); float quarterWindowWidth = window.GetSize().GetWidth() * 0.25f; - mActor = Actor::New(); - mActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); - mActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - mActor.SetProperty( Actor::Property::POSITION, Vector3( 0.0f, 0.0f, 0.0f ) ); - mActor.SetProperty( Actor::Property::SIZE, Vector3( quarterWindowWidth, quarterWindowWidth, quarterWindowWidth ) ); - mActor.AddRenderer( mRenderer ); - window.Add( mActor ); + mActor = Actor::New(); + mActor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + mActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + mActor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); + mActor.SetProperty(Actor::Property::SIZE, Vector3(quarterWindowWidth, quarterWindowWidth, quarterWindowWidth)); + mActor.AddRenderer(mRenderer); + window.Add(mActor); } /** @@ -278,29 +235,29 @@ public: */ void PlayAnimation() { - mAnimation = Animation::New( 5.0f ); - mAnimation.SetLooping( true ); - mAnimation.AnimateBy( Property( mActor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( 360 )), Vector3::ZAXIS ) ); - mAnimation.AnimateBy( Property( mActor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( 360 )), Vector3::YAXIS ) ); - mAnimation.AnimateBy( Property( mActor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( 360 )), Vector3::XAXIS ) ); + mAnimation = Animation::New(5.0f); + mAnimation.SetLooping(true); + mAnimation.AnimateBy(Property(mActor, Actor::Property::ORIENTATION), Quaternion(Radian(Degree(360)), Vector3::ZAXIS)); + mAnimation.AnimateBy(Property(mActor, Actor::Property::ORIENTATION), Quaternion(Radian(Degree(360)), Vector3::YAXIS)); + mAnimation.AnimateBy(Property(mActor, Actor::Property::ORIENTATION), Quaternion(Radian(Degree(360)), Vector3::XAXIS)); mAnimation.Play(); } private: - Application& mApplication; + Application& mApplication; - Renderer mRenderer; - Shader mShader; - Geometry mGeometry; + Renderer mRenderer; + Shader mShader; + Geometry mGeometry; TextureSet mTextureSet; - Actor mActor; - Animation mAnimation; + Actor mActor; + Animation mAnimation; }; -int DALI_EXPORT_API main( int argc, char **argv ) +int DALI_EXPORT_API main(int argc, char** argv) { - Application application = Application::New( &argc, &argv ); - TexturedCubeController test( application ); + Application application = Application::New(&argc, &argv); + TexturedCubeController test(application); application.MainLoop(); return 0; }