+/*
+ * Copyright (c) 2018 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
#include <dali/internal/render/renderers/render-property-buffer.h>
#include <dali/internal/event/common/property-buffer-impl.h> // Dali::Internal::PropertyBuffer
namespace
{
-using namespace Dali;
using Dali::Property;
using Dali::Internal::PropertyImplementationType;
case Property::STRING:
case Property::ARRAY:
case Property::MAP:
+ case Property::EXTENTS:
case Property::RECTANGLE:
case Property::ROTATION:
{
return type;
}
-size_t GetPropertyImplementationGlSize( Property::Type propertyType )
+Dali::GLint GetPropertyImplementationGlSize( Property::Type propertyType )
{
- size_t size = 1u;
+ Dali::GLint size = 1u;
switch( propertyType )
{
case Property::STRING:
case Property::ARRAY:
case Property::MAP:
+ case Property::EXTENTS:
case Property::RECTANGLE:
case Property::ROTATION:
{
mDataChanged = true;
}
-void PropertyBuffer::SetData( Dali::Vector<char>* data )
+void PropertyBuffer::SetData( Dali::Vector<uint8_t>* data, uint32_t size )
{
mData = data;
- mDataChanged = true;
-}
-
-void PropertyBuffer::SetSize( unsigned int size )
-{
mSize = size;
mDataChanged = true;
}
-
-bool PropertyBuffer::Update( Context& context, bool isIndexBuffer )
+bool PropertyBuffer::Update( Context& context )
{
if( !mData || !mFormat || !mSize )
{
if ( mGpuBuffer )
{
DALI_ASSERT_DEBUG( mSize && "No data in the property buffer!" );
-
- const void *data = &((*mData)[0]);
-
- // Index buffer needs to be unsigned short which is not supported by the property system
- Vector<unsigned short> ushortData;
- if( isIndexBuffer )
- {
- ushortData.Resize(mSize);
- const unsigned int* unsignedData = static_cast<const unsigned int*>(data);
- for( unsigned int i = 0; i < mSize; ++i )
- {
- ushortData[i] = unsignedData[i];
- }
- data = &(ushortData[0]);
- }
-
- mGpuBuffer->UpdateDataBuffer( GetDataSize(), data, GpuBuffer::STATIC_DRAW );
+ mGpuBuffer->UpdateDataBuffer( context, GetDataSize(), &((*mData)[0]), GpuBuffer::STATIC_DRAW, GpuBuffer::ARRAY_BUFFER );
}
mDataChanged = false;
return true;
}
-void PropertyBuffer::BindBuffer(GpuBuffer::Target target)
+void PropertyBuffer::BindBuffer( Context& context, GpuBuffer::Target target )
{
if(mGpuBuffer)
{
- mGpuBuffer->Bind(target);
+ mGpuBuffer->Bind(context, target);
}
}
-unsigned int PropertyBuffer::EnableVertexAttributes( Context& context, Vector<GLint>& vAttributeLocation, unsigned int locationBase )
+uint32_t PropertyBuffer::EnableVertexAttributes( Context& context, Vector<GLint>& vAttributeLocation, uint32_t locationBase )
{
-
- unsigned int attributeCount = mFormat->components.size();
+ const uint32_t attributeCount = static_cast<uint32_t>( mFormat->components.size() );
GLsizei elementSize = mFormat->size;
- for( unsigned int i = 0; i < attributeCount; ++i )
+ for( uint32_t i = 0; i < attributeCount; ++i )
{
GLint attributeLocation = vAttributeLocation[i+locationBase];
if( attributeLocation != -1 )
context.EnableVertexAttributeArray( attributeLocation );
const GLint attributeSize = mFormat->components[i].size;
- size_t attributeOffset = mFormat->components[i].offset;
+ uint32_t attributeOffset = mFormat->components[i].offset;
const Property::Type attributeType = mFormat->components[i].type;
context.VertexAttribPointer( attributeLocation,
GetPropertyImplementationGlType(attributeType),
GL_FALSE, // Not normalized
elementSize,
- (void*)attributeOffset );
+ reinterpret_cast< void* >( attributeOffset ) );
}
}
return attributeCount;
-
}
} //Render