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; }