mirror of https://github.com/axmolengine/axmol.git
80 lines
2.5 KiB
C++
80 lines
2.5 KiB
C++
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
#include "EffekseerRenderer.VertexBufferBase.h"
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
namespace EffekseerRenderer
|
|||
|
{
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
VertexBufferBase::VertexBufferBase(int size, bool isDynamic)
|
|||
|
: m_isDynamic(isDynamic)
|
|||
|
, m_size(size)
|
|||
|
, m_offset(0)
|
|||
|
, m_resource(nullptr)
|
|||
|
, m_isLock(false)
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
VertexBufferBase::~VertexBufferBase()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
void VertexBufferBase::Push(const void* buffer, int size)
|
|||
|
{
|
|||
|
assert(m_isLock);
|
|||
|
memcpy(GetBufferDirect(size), buffer, size);
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
int VertexBufferBase::GetMaxSize() const
|
|||
|
{
|
|||
|
return m_size;
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
int VertexBufferBase::GetSize() const
|
|||
|
{
|
|||
|
return m_offset;
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
void* VertexBufferBase::GetBufferDirect(int size)
|
|||
|
{
|
|||
|
assert(m_isLock);
|
|||
|
if (m_offset + size > m_size)
|
|||
|
return nullptr;
|
|||
|
|
|||
|
void* pBuffer = nullptr;
|
|||
|
|
|||
|
// バッファに追記
|
|||
|
pBuffer = m_resource + m_offset;
|
|||
|
m_offset += size;
|
|||
|
|
|||
|
return pBuffer;
|
|||
|
}
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
} // namespace EffekseerRenderer
|
|||
|
//-----------------------------------------------------------------------------------
|
|||
|
//
|
|||
|
//-----------------------------------------------------------------------------------
|