Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
W3DBufferManager Class Reference

#include <W3DBufferManager.h>

Classes

struct  W3DIndexBuffer
 
struct  W3DIndexBufferSlot
 
struct  W3DRenderTask
 
struct  W3DVertexBuffer
 
struct  W3DVertexBufferSlot
 

Public Types

enum  VBM_FVF_TYPES {
  VBM_FVF_XYZ , VBM_FVF_XYZD , VBM_FVF_XYZUV , VBM_FVF_XYZDUV ,
  VBM_FVF_XYZUV2 , VBM_FVF_XYZDUV2 , VBM_FVF_XYZN , VBM_FVF_XYZND ,
  VBM_FVF_XYZNUV , VBM_FVF_XYZNDUV , VBM_FVF_XYZNUV2 , VBM_FVF_XYZNDUV2 ,
  VBM_FVF_XYZRHW , VBM_FVF_XYZRHWD , VBM_FVF_XYZRHWUV , VBM_FVF_XYZRHWDUV ,
  VBM_FVF_XYZRHWUV2 , VBM_FVF_XYZRHWDUV2 , MAX_FVF
}
 

Public Member Functions

 W3DBufferManager (void)
 
 ~W3DBufferManager (void)
 
W3DVertexBufferSlotgetSlot (VBM_FVF_TYPES fvfType, Int size)
 return free vertex buffer memory slot.
 
W3DIndexBufferSlotgetSlot (Int size)
 return free index buffer memory slot.
 
void releaseSlot (W3DVertexBufferSlot *vbSlot)
 return slot to pool
 
void releaseSlot (W3DIndexBufferSlot *vbSlot)
 return slot to pool
 
void freeAllSlots (void)
 release all slots to pool.
 
void freeAllBuffers (void)
 release all vertex buffers to pool.
 
void ReleaseResources (void)
 release D3D/W3D resources.
 
Bool ReAcquireResources (void)
 
W3DVertexBuffergetNextVertexBuffer (W3DVertexBuffer *pVb, VBM_FVF_TYPES type)
 allows iterating over vertex buffers used by manager. Input of NULL to get first.
 

Static Public Member Functions

static Int getDX8Format (VBM_FVF_TYPES format)
 translates our vertex format into D3D equivalent
 

Protected Member Functions

W3DVertexBufferSlotallocateSlotStorage (VBM_FVF_TYPES fvfType, Int size)
 allocate new memory inside a vertex buffer.
 
W3DIndexBufferSlotallocateSlotStorage (Int size)
 

Protected Attributes

W3DVertexBufferSlotm_W3DVertexBufferSlots [MAX_FVF][MAX_VB_SIZES]
 holds previously allocated slots that are free to fill again.
 
W3DVertexBufferm_W3DVertexBuffers [MAX_FVF]
 holds allocated vertex buffers of each type.
 
W3DVertexBufferSlot m_W3DVertexBufferEmptySlots [MAX_NUMBER_SLOTS]
 holds unallocated slot wrappers which were never initialized
 
Int m_numEmptySlotsAllocated
 
W3DVertexBuffer m_W3DEmptyVertexBuffers [MAX_VERTEX_BUFFERS_CREATED]
 holds unallocated vertex buffer wrappers which were never initialized
 
Int m_numEmptyVertexBuffersAllocated
 
W3DIndexBufferSlotm_W3DIndexBufferSlots [MAX_IB_SIZES]
 holds previously allocated slots that are free to fill again.
 
W3DIndexBufferm_W3DIndexBuffers
 holds allocated index buffers of each type.
 
W3DIndexBufferSlot m_W3DIndexBufferEmptySlots [MAX_NUMBER_SLOTS]
 holds unallocated slot wrappers which were never initialized
 
Int m_numEmptyIndexSlotsAllocated
 
W3DIndexBuffer m_W3DEmptyIndexBuffers [MAX_INDEX_BUFFERS_CREATED]
 holds unallocated index buffer wrappers which were never initialized
 
Int m_numEmptyIndexBuffersAllocated
 

Detailed Description

Definition at line 50 of file W3DBufferManager.h.

Member Enumeration Documentation

◆ VBM_FVF_TYPES

Enumerator
VBM_FVF_XYZ 
VBM_FVF_XYZD 
VBM_FVF_XYZUV 
VBM_FVF_XYZDUV 
VBM_FVF_XYZUV2 
VBM_FVF_XYZDUV2 
VBM_FVF_XYZN 
VBM_FVF_XYZND 
VBM_FVF_XYZNUV 
VBM_FVF_XYZNDUV 
VBM_FVF_XYZNUV2 
VBM_FVF_XYZNDUV2 
VBM_FVF_XYZRHW 
VBM_FVF_XYZRHWD 
VBM_FVF_XYZRHWUV 
VBM_FVF_XYZRHWDUV 
VBM_FVF_XYZRHWUV2 
VBM_FVF_XYZRHWDUV2 
MAX_FVF 

Definition at line 54 of file W3DBufferManager.h.

Constructor & Destructor Documentation

◆ W3DBufferManager()

W3DBufferManager::W3DBufferManager ( void )

Definition at line 58 of file W3DBufferManager.cpp.

◆ ~W3DBufferManager()

W3DBufferManager::~W3DBufferManager ( void )

Definition at line 76 of file W3DBufferManager.cpp.

Member Function Documentation

◆ allocateSlotStorage() [1/2]

W3DBufferManager::W3DIndexBufferSlot * W3DBufferManager::allocateSlotStorage ( Int size)
protected

Reserves space inside existing index buffer or allocates a new one to fit the required size.

Definition at line 369 of file W3DBufferManager.cpp.

◆ allocateSlotStorage() [2/2]

W3DBufferManager::W3DVertexBufferSlot * W3DBufferManager::allocateSlotStorage ( VBM_FVF_TYPES fvfType,
Int size )
protected

allocate new memory inside a vertex buffer.

Reserves space inside existing vertex buffer or allocates a new one to fit the required size.

Definition at line 255 of file W3DBufferManager.cpp.

◆ freeAllBuffers()

void W3DBufferManager::freeAllBuffers ( void )

release all vertex buffers to pool.

<release all slots to pool.

Definition at line 131 of file W3DBufferManager.cpp.

◆ freeAllSlots()

void W3DBufferManager::freeAllSlots ( void )

release all slots to pool.

Definition at line 82 of file W3DBufferManager.cpp.

◆ getDX8Format()

Int W3DBufferManager::getDX8Format ( VBM_FVF_TYPES format)
static

translates our vertex format into D3D equivalent

Definition at line 53 of file W3DBufferManager.cpp.

◆ getNextVertexBuffer()

W3DVertexBuffer * W3DBufferManager::getNextVertexBuffer ( W3DVertexBuffer * pVb,
VBM_FVF_TYPES type )
inline

allows iterating over vertex buffers used by manager. Input of NULL to get first.

Definition at line 141 of file W3DBufferManager.h.

◆ getSlot() [1/2]

W3DBufferManager::W3DIndexBufferSlot * W3DBufferManager::getSlot ( Int size)

return free index buffer memory slot.

Searches through previously allocated index buffer slots and returns a matching type. If none found, creates a new slot and adds it to the pool. Returns an integer slotId used to reference the VB. Returns -1 in case of failure.

Definition at line 329 of file W3DBufferManager.cpp.

◆ getSlot() [2/2]

W3DBufferManager::W3DVertexBufferSlot * W3DBufferManager::getSlot ( VBM_FVF_TYPES fvfType,
Int size )

return free vertex buffer memory slot.

Searches through previously allocated vertex buffer slots and returns a matching type. If none found, creates a new slot and adds it to the pool. Returns an integer slotId used to reference the VB. Returns -1 in case of failure.

Definition at line 215 of file W3DBufferManager.cpp.

◆ ReAcquireResources()

Bool W3DBufferManager::ReAcquireResources ( void )

reaquire D3D/W3D resources.

Definition at line 183 of file W3DBufferManager.cpp.

◆ ReleaseResources()

void W3DBufferManager::ReleaseResources ( void )

release D3D/W3D resources.

Definition at line 163 of file W3DBufferManager.cpp.

◆ releaseSlot() [1/2]

void W3DBufferManager::releaseSlot ( W3DIndexBufferSlot * ibSlot)

return slot to pool

Returns index buffer space back to pool so it can be reused later

Definition at line 356 of file W3DBufferManager.cpp.

◆ releaseSlot() [2/2]

void W3DBufferManager::releaseSlot ( W3DVertexBufferSlot * vbSlot)

return slot to pool

Returns vertex buffer space back to pool so it can be reused later

Definition at line 242 of file W3DBufferManager.cpp.

Member Data Documentation

◆ m_numEmptyIndexBuffersAllocated

Int W3DBufferManager::m_numEmptyIndexBuffersAllocated
protected

Definition at line 171 of file W3DBufferManager.h.

◆ m_numEmptyIndexSlotsAllocated

Int W3DBufferManager::m_numEmptyIndexSlotsAllocated
protected

Definition at line 168 of file W3DBufferManager.h.

◆ m_numEmptySlotsAllocated

Int W3DBufferManager::m_numEmptySlotsAllocated
protected

Definition at line 157 of file W3DBufferManager.h.

◆ m_numEmptyVertexBuffersAllocated

Int W3DBufferManager::m_numEmptyVertexBuffersAllocated
protected

Definition at line 160 of file W3DBufferManager.h.

◆ m_W3DEmptyIndexBuffers

W3DIndexBuffer W3DBufferManager::m_W3DEmptyIndexBuffers[MAX_INDEX_BUFFERS_CREATED]
protected

holds unallocated index buffer wrappers which were never initialized

Definition at line 170 of file W3DBufferManager.h.

◆ m_W3DEmptyVertexBuffers

W3DVertexBuffer W3DBufferManager::m_W3DEmptyVertexBuffers[MAX_VERTEX_BUFFERS_CREATED]
protected

holds unallocated vertex buffer wrappers which were never initialized

Definition at line 159 of file W3DBufferManager.h.

◆ m_W3DIndexBufferEmptySlots

W3DIndexBufferSlot W3DBufferManager::m_W3DIndexBufferEmptySlots[MAX_NUMBER_SLOTS]
protected

holds unallocated slot wrappers which were never initialized

Definition at line 167 of file W3DBufferManager.h.

◆ m_W3DIndexBuffers

W3DIndexBuffer* W3DBufferManager::m_W3DIndexBuffers
protected

holds allocated index buffers of each type.

Definition at line 165 of file W3DBufferManager.h.

◆ m_W3DIndexBufferSlots

W3DIndexBufferSlot* W3DBufferManager::m_W3DIndexBufferSlots[MAX_IB_SIZES]
protected

holds previously allocated slots that are free to fill again.

Definition at line 163 of file W3DBufferManager.h.

◆ m_W3DVertexBufferEmptySlots

W3DVertexBufferSlot W3DBufferManager::m_W3DVertexBufferEmptySlots[MAX_NUMBER_SLOTS]
protected

holds unallocated slot wrappers which were never initialized

Definition at line 156 of file W3DBufferManager.h.

◆ m_W3DVertexBuffers

W3DVertexBuffer* W3DBufferManager::m_W3DVertexBuffers[MAX_FVF]
protected

holds allocated vertex buffers of each type.

Definition at line 154 of file W3DBufferManager.h.

◆ m_W3DVertexBufferSlots

W3DVertexBufferSlot* W3DBufferManager::m_W3DVertexBufferSlots[MAX_FVF][MAX_VB_SIZES]
protected

holds previously allocated slots that are free to fill again.

Definition at line 152 of file W3DBufferManager.h.


The documentation for this class was generated from the following files: