2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiEffects_RendererGraphicsEngineRenderDrawableCache.h
20 * @brief Class for drawable objects cache
24 #ifndef _FUI_EFFECTS_INTERNAL_RENDERER_GRAPHICS_ENGINE_RENDER_DRAWABLE_CACHE_H_
25 #define _FUI_EFFECTS_INTERNAL_RENDERER_GRAPHICS_ENGINE_RENDER_DRAWABLE_CACHE_H_
27 #include <renderer/engine-model/FUiEffects_RendererEngineModelForwardDeclaration.h>
28 #include <renderer/engine-model/FUiEffects_RendererEngineModelProperty.h>
30 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineOpenGLImplementation.h>
31 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderCommand.h>
32 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderCache.h>
33 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderRenderTargetCache.h>
34 #include <renderer/graphics-engine/FUiEffects_RendererGraphicsEngineRenderStateCache.h>
36 namespace Tizen { namespace Ui { namespace Effects { namespace _Renderer { namespace GraphicsEngine
40 class IndexBufferCache;
41 class VertexBufferCache;
42 class VertexBufferCache;
43 class VertexBufferCache;
44 class CompositeVertexBufferCache;
45 class CompositeVertexBufferCache;
46 class CompositeVertexBufferCache;
47 class RenderTexture2dCache;
48 class RenderProgramCache;
54 UseProgram(RenderProgramCache* pProgram);
55 virtual ~UseProgram(void) {}
57 virtual void Apply(Render*);
60 RenderProgramCache* __pProgram;
63 class DisableProgramAttributers:
67 DisableProgramAttributers(RenderProgramCache* pProgram);
68 virtual ~DisableProgramAttributers(void) {}
70 virtual void Apply(Render*);
73 RenderProgramCache* __pProgram;
76 class Sampler2dUniform:
80 Sampler2dUniform(RenderTexture2dCache* pTexture, GLuint unit);
81 virtual ~Sampler2dUniform(void) {}
83 virtual void Apply(Render*);
86 RenderTexture2dCache* __pTexture;
90 class Sampler2dAttachmentUniform:
94 Sampler2dAttachmentUniform(Texture2dAttachmentCache* pTexture, GLuint unit);
95 virtual ~Sampler2dAttachmentUniform(void) {}
97 virtual void Apply(Render*);
100 Texture2dAttachmentCache* __pTexture;
104 class Matrix4fUniform:
108 Matrix4fUniform(Tizen::Ui::Effects::_Renderer::EngineModel::Matrix4fProperty* pUniform, GLuint location);
109 virtual ~Matrix4fUniform(void) {}
111 virtual void Apply(Render*);
114 Tizen::Ui::Effects::_Renderer::EngineModel::Matrix4fProperty* __pUniform;
122 IntUniform(Tizen::Ui::Effects::_Renderer::EngineModel::IntProperty* pUniform, GLuint location);
123 virtual ~IntUniform(void) {}
125 virtual void Apply(Render*);
128 Tizen::Ui::Effects::_Renderer::EngineModel::IntProperty* __pUniform;
136 FloatUniform(Tizen::Ui::Effects::_Renderer::EngineModel::FloatProperty* pUniform, GLuint location);
137 virtual ~FloatUniform(void) {}
139 virtual void Apply(Render*);
142 Tizen::Ui::Effects::_Renderer::EngineModel::FloatProperty* __pUniform;
146 class FloatArrayUniform:
150 FloatArrayUniform(Tizen::Ui::Effects::_Renderer::EngineModel::FloatArrayProperty* pUniform, GLuint location);
151 virtual ~FloatArrayUniform(void) {}
153 virtual void Apply(Render*);
156 Tizen::Ui::Effects::_Renderer::EngineModel::FloatArrayProperty* __pUniform;
160 class Vector2fUniform:
164 Vector2fUniform(Tizen::Ui::Effects::_Renderer::EngineModel::Vector2fProperty* pUniform, GLuint location);
165 virtual ~Vector2fUniform(void) {}
167 virtual void Apply(Render*);
170 Tizen::Ui::Effects::_Renderer::EngineModel::Vector2fProperty* __pUniform;
174 class Vector3fUniform:
178 Vector3fUniform(Tizen::Ui::Effects::_Renderer::EngineModel::Vector3fProperty* pUniform, GLuint location);
179 virtual ~Vector3fUniform(void) {}
181 virtual void Apply(Render*);
184 Tizen::Ui::Effects::_Renderer::EngineModel::Vector3fProperty* __pUniform;
188 class Vector4fUniform:
192 Vector4fUniform(Tizen::Ui::Effects::_Renderer::EngineModel::Vector4fProperty* pUniform, GLuint location);
193 virtual ~Vector4fUniform(void) {}
195 virtual void Apply(Render*);
198 Tizen::Ui::Effects::_Renderer::EngineModel::Vector4fProperty* _pUniform;
202 class ProgramAttribute:
206 ProgramAttribute(VertexBufferCache* pAttribute, GLuint location);
207 virtual ~ProgramAttribute(void) {}
209 virtual void Apply(Render*);
212 VertexBufferCache* __pAttribute;
220 BindBuffer(CompositeVertexBufferCache* pBuffer);
221 virtual ~BindBuffer(void) {}
223 virtual void Apply(Render*);
226 CompositeVertexBufferCache* __pBuffer;
233 DrawIndexed(IndexBufferCache* pBuffer);
234 virtual ~DrawIndexed(void) {}
236 virtual void Apply(Render*);
239 IndexBufferCache* __pBuffer;
246 SetState(RenderStateCache* pState);
247 virtual ~SetState(void) {}
249 virtual void Apply(Render*);
252 RenderStateCache* __pState;
255 class RenderDrawableCache:
259 typedef std::vector<RenderCommandPtr> RenderCommandsListType;
260 typedef RenderCommandsListType::size_type RenderCommandsListSizeType;
262 typedef std::vector<Tizen::Ui::Effects::_Renderer::EngineModel::TextureAttachment*> ExternalTexturesListType;
263 typedef ExternalTexturesListType::size_type ExternalTexturesListSizeType;
265 RenderDrawableCache(Render* pRender, Tizen::Ui::Effects::_Renderer::EngineModel::Drawable* pDrawable);
266 virtual ~RenderDrawableCache(void);
268 virtual void Die(void);
269 virtual void DropCache(void);
270 virtual void DestroyCache(void);
272 virtual void Validate(Render*);
275 const Math::Matrix4f& GetWorld(void);
276 bool HasAlphaBlend(Render*);
278 ExternalTexturesListSizeType NumExternalTextures(void);
279 Tizen::Ui::Effects::_Renderer::EngineModel::TextureAttachment* GetExternalTexture(ExternalTexturesListSizeType index);
282 RenderCommandsListType __commands;
283 RenderCommandsListType __ownCommands;
284 Tizen::Ui::Effects::_Renderer::EngineModel::Drawable* __pDrawable;
285 ExternalTexturesListType __externalTextures;
287 RenderStateCache* __pAlphaBlend;
290 typedef Tizen::Ui::Effects::_Renderer::System::SmartPtr<RenderDrawableCache> RenderDrawableCachePtr;
292 }}}}} //Tizen::Ui::Effects::_Renderer::GraphicsEngine
294 #endif //_FUI_EFFECTS_INTERNAL_RENDERER_GRAPHICS_ENGINE_RENDER_DRAWABLE_CACHE_H_