mirror of https://github.com/axmolengine/axmol.git
79 lines
2.6 KiB
C++
79 lines
2.6 KiB
C++
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
#include "EffekseerRenderer.IndexBufferBase.h"
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
namespace EffekseerRenderer
|
|||
|
{
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
IndexBufferBase::IndexBufferBase(int maxCount, bool isDynamic)
|
|||
|
: m_indexMaxCount(maxCount)
|
|||
|
, m_indexCount(0)
|
|||
|
, m_isDynamic(false)
|
|||
|
, m_isLock(false)
|
|||
|
, m_resource(nullptr)
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
IndexBufferBase::~IndexBufferBase()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
void IndexBufferBase::Push(const void* buffer, int count)
|
|||
|
{
|
|||
|
assert(m_isLock);
|
|||
|
memcpy(GetBufferDirect(count), buffer, count * stride_);
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
int IndexBufferBase::GetCount() const
|
|||
|
{
|
|||
|
return m_indexCount;
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
int IndexBufferBase::GetMaxCount() const
|
|||
|
{
|
|||
|
return m_indexMaxCount;
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
void* IndexBufferBase::GetBufferDirect(int count)
|
|||
|
{
|
|||
|
assert(m_isLock);
|
|||
|
assert(m_indexMaxCount >= m_indexCount + count);
|
|||
|
|
|||
|
uint8_t* pBuffer = nullptr;
|
|||
|
|
|||
|
pBuffer = (uint8_t*)m_resource + (m_indexCount * stride_);
|
|||
|
m_indexCount += count;
|
|||
|
|
|||
|
return pBuffer;
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
} // namespace EffekseerRenderer
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|