projects
/
platform
/
core
/
uifw
/
dali-core.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[Tizen] Regenerating uniform maps fix
[platform/core/uifw/dali-core.git]
/
dali
/
internal
/
render
/
renderers
/
render-renderer.cpp
diff --git
a/dali/internal/render/renderers/render-renderer.cpp
b/dali/internal/render/renderers/render-renderer.cpp
index
2222abd
..
9324d86
100644
(file)
--- a/
dali/internal/render/renderers/render-renderer.cpp
+++ b/
dali/internal/render/renderers/render-renderer.cpp
@@
-145,7
+145,8
@@
Renderer::Renderer( SceneGraph::RenderDataProvider* dataProvider,
mDepthWriteMode( depthWriteMode ),
mDepthTestMode( depthTestMode ),
mUpdateAttributesLocation( true ),
mDepthWriteMode( depthWriteMode ),
mDepthTestMode( depthTestMode ),
mUpdateAttributesLocation( true ),
- mPremultipledAlphaEnabled( preMultipliedAlphaEnabled )
+ mPremultipledAlphaEnabled( preMultipliedAlphaEnabled ),
+ mShaderChanged( false )
{
if( blendingBitmask != 0u )
{
{
if( blendingBitmask != 0u )
{
@@
-216,8
+217,12
@@
void Renderer::SetUniforms( BufferIndex bufferIndex, const SceneGraph::NodeDataP
if( uniformMapDataProvider.GetUniformMapChanged( bufferIndex ) ||
node.GetUniformMapChanged(bufferIndex) ||
if( uniformMapDataProvider.GetUniformMapChanged( bufferIndex ) ||
node.GetUniformMapChanged(bufferIndex) ||
- mUniformIndexMap.Count() == 0)
+ mUniformIndexMap.Count() == 0 ||
+ mShaderChanged )
{
{
+ // Reset shader pointer
+ mShaderChanged = false;
+
const SceneGraph::CollectedUniformMap& uniformMap = uniformMapDataProvider.GetUniformMap( bufferIndex );
const SceneGraph::CollectedUniformMap& uniformMapNode = node.GetUniformMap( bufferIndex );
const SceneGraph::CollectedUniformMap& uniformMap = uniformMapDataProvider.GetUniformMap( bufferIndex );
const SceneGraph::CollectedUniformMap& uniformMapNode = node.GetUniformMap( bufferIndex );
@@
-342,7
+347,7
@@
void Renderer::SetUniformFromProperty( BufferIndex bufferIndex, Program& program
}
}
}
}
-bool Renderer::BindTextures( Context& context, Program& program )
+bool Renderer::BindTextures( Context& context, Program& program
, Vector<GLuint>& boundTextures
)
{
uint32_t textureUnit = 0;
bool result = true;
{
uint32_t textureUnit = 0;
bool result = true;
@@
-355,6
+360,7
@@
bool Renderer::BindTextures( Context& context, Program& program )
if( textures[i] )
{
result = textures[i]->Bind(context, textureUnit, samplers[i] );
if( textures[i] )
{
result = textures[i]->Bind(context, textureUnit, samplers[i] );
+ boundTextures.PushBack( textures[i]->GetId() );
if( result && program.GetSamplerUniformLocation( i, uniformLocation ) )
{
program.SetUniform1i( uniformLocation, textureUnit );
if( result && program.GetSamplerUniformLocation( i, uniformLocation ) )
{
program.SetUniform1i( uniformLocation, textureUnit );
@@
-519,7
+525,8
@@
void Renderer::Render( Context& context,
const Matrix& viewMatrix,
const Matrix& projectionMatrix,
const Vector3& size,
const Matrix& viewMatrix,
const Matrix& projectionMatrix,
const Vector3& size,
- bool blend )
+ bool blend,
+ Vector<GLuint>& boundTextures )
{
// Get the program to use:
Program* program = mRenderDataProvider->GetShader().GetProgram();
{
// Get the program to use:
Program* program = mRenderDataProvider->GetShader().GetProgram();
@@
-538,7
+545,7
@@
void Renderer::Render( Context& context,
// Take the program into use so we can send uniforms to it
program->Use();
// Take the program into use so we can send uniforms to it
program->Use();
- if( DALI_LIKELY( BindTextures( context, *program ) ) )
+ if( DALI_LIKELY( BindTextures( context, *program
, boundTextures
) ) )
{
// Only set up and draw if we have textures and they are all valid
{
// Only set up and draw if we have textures and they are all valid
@@
-584,6
+591,11
@@
void Renderer::SetSortAttributes( BufferIndex bufferIndex,
sortAttributes.geometry = mGeometry;
}
sortAttributes.geometry = mGeometry;
}
+void Renderer::SetShaderChanged( bool value )
+{
+ mShaderChanged = value;
+}
+
} // namespace SceneGraph
} // namespace Internal
} // namespace SceneGraph
} // namespace Internal