nux-1.14.0
nux::CachedIndexBuffer Class Reference
Inheritance diagram for nux::CachedIndexBuffer:
nux::CachedResourceData nux::Object nux::Trackable nux::Introspectable

List of all members.

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

Detailed Description

Definition at line 122 of file GLVertexResourceManager.h.


Member Function Documentation

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

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends