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

List of all members.

Public Member Functions

 CachedVertexBuffer (NResourceSet *ResourceManager, VertexBuffer *resource)
bool UpdateResource (ResourceData *Resource)
int GetElementSize () const
int GetBufferStride () const

Public Attributes

ObjectPtr< IOpenGLVertexBuffer_vertex_buffer

Detailed Description

Definition at line 103 of file GLVertexResourceManager.h.


Member Function Documentation

bool nux::CachedVertexBuffer::UpdateResource ( ResourceData Resource) [virtual]

Updates the resource.

Implements nux::CachedResourceData.

Definition at line 282 of file GLVertexResourceManager.cpp.

References nux::ObjectPtr< T >::Release().

  {
    if(Source == 0)
    {
      _Stride = 0;
      _vertex_buffer.Release();
      return true;
    }

    VertexBuffer *SourceVtxBuffer = 0;
    nuxAssert(Source->Type().IsDerivedFromType(VertexBuffer::StaticObjectType));

    if(Source->Type().IsDerivedFromType(VertexBuffer::StaticObjectType))
    {
      SourceVtxBuffer = NUX_STATIC_CAST(VertexBuffer *, Source);
    }
    else
    {
      return false;
    }

    if((SourceVtxBuffer->GetSize() == 0) || (SourceVtxBuffer->GetStride() == 0))
    {
      _Stride = 0;
      _vertex_buffer.Release();
      return true;
    }

    if(_Size != SourceVtxBuffer->GetSize())
    {
      // The current size of the cached buffer is not the same as the requested one.
      // Delete the previously allocated buffer and create a new one.
      _Size = SourceVtxBuffer->GetSize();
      _Stride = SourceVtxBuffer->GetStride();

      //Release the previous vertex buffer if any.
      _vertex_buffer.Release();
      _vertex_buffer = GetGraphicsDisplay()->GetGpuDevice()->CreateVertexBuffer(_Size, VBO_USAGE_DYNAMIC);
      LoadVertexData(SourceVtxBuffer);
    }
    else
    {
      // The buffer size has changed. Delete the previously allocated buffer and create a new one.
      _Stride = SourceVtxBuffer->GetStride();
      LoadVertexData(SourceVtxBuffer);
    }

    return true;
  }

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