|
nux-1.14.0
|
Public Member Functions | |
| CachedIndexBuffer (NResourceSet *ResourceManager, IndexBuffer *resource) | |
| bool | UpdateResource (ResourceData *Resource) |
| int | GetElementSize () const |
| int | GetBufferStride () const |
| int | GetNumIndex () const |
Public Attributes | |
| ObjectPtr< IOpenGLIndexBuffer > | _index_buffer |
Definition at line 122 of file GLVertexResourceManager.h.
| bool nux::CachedIndexBuffer::UpdateResource | ( | ResourceData * | Resource | ) | [virtual] |
Updates the resource.
Implements nux::CachedResourceData.
Definition at line 370 of file GLVertexResourceManager.cpp.
References nux::ObjectPtr< T >::Release().
{
if (Source == 0)
{
_Size = 0;
_Stride = 0;
_index_buffer.Release();
return true;
}
IndexBuffer *SourceIdxBuffer = 0;
nuxAssert (Source->Type().IsDerivedFromType (IndexBuffer::StaticObjectType) );
if (Source->Type().IsDerivedFromType (IndexBuffer::StaticObjectType) )
{
SourceIdxBuffer = NUX_STATIC_CAST (IndexBuffer *, Source);
}
else
{
return false;
}
if ( (SourceIdxBuffer->GetSize() == 0) || (SourceIdxBuffer->GetStride() == 0) )
{
_Size = 0;
_Stride = 0;
_index_buffer.Release();
return true;
}
if (_Size != SourceIdxBuffer->GetSize() )
{
_Size = SourceIdxBuffer->GetSize();
_Stride = SourceIdxBuffer->GetStride();
//Release the previous vertex buffer if any.
_index_buffer.Release();
_index_buffer = GetGraphicsDisplay()->GetGpuDevice()->CreateIndexBuffer (_Size, VBO_USAGE_DYNAMIC,
(SourceIdxBuffer->GetStride() == 2) ? INDEX_FORMAT_USHORT : INDEX_FORMAT_UINT);
LoadIndexData (SourceIdxBuffer);
}
else
{
_Stride = SourceIdxBuffer->GetStride();
LoadIndexData (SourceIdxBuffer);
}
_num_index = SourceIdxBuffer->GetNumIndex();
return true;
}