Added support to sequential index buffers

Former-commit-id: 68a566ab9bfe0490ba25aeb1c7486722b4a4ed01
This commit is contained in:
Lynix 2013-01-03 22:08:22 +01:00
parent ef0dd580f5
commit ab93fb802b
1 changed files with 37 additions and 14 deletions

View File

@ -21,6 +21,13 @@ namespace
return ptr[i]; return ptr[i];
} }
nzUInt32 GetterSequential(const void* buffer, unsigned int i)
{
NazaraUnused(buffer);
return static_cast<nzUInt32>(i);
}
void Setter16(void* buffer, unsigned int i, nzUInt32 value) void Setter16(void* buffer, unsigned int i, nzUInt32 value)
{ {
nzUInt16* ptr = reinterpret_cast<nzUInt16*>(buffer); nzUInt16* ptr = reinterpret_cast<nzUInt16*>(buffer);
@ -42,6 +49,8 @@ namespace
NzIndexMapper::NzIndexMapper(NzIndexBuffer* indexBuffer, nzBufferAccess access) : NzIndexMapper::NzIndexMapper(NzIndexBuffer* indexBuffer, nzBufferAccess access) :
m_mapper(indexBuffer, access) m_mapper(indexBuffer, access)
{ {
if (indexBuffer && !indexBuffer->IsSequential())
{
if (indexBuffer->HasLargeIndices()) if (indexBuffer->HasLargeIndices())
{ {
m_getter = Getter32; m_getter = Getter32;
@ -58,11 +67,19 @@ m_mapper(indexBuffer, access)
else else
m_setter = SetterError; m_setter = SetterError;
} }
}
else
{
m_getter = GetterSequential;
m_setter = SetterError;
}
} }
NzIndexMapper::NzIndexMapper(const NzIndexBuffer* indexBuffer) : NzIndexMapper::NzIndexMapper(const NzIndexBuffer* indexBuffer) :
m_mapper(indexBuffer, nzBufferAccess_ReadOnly) m_mapper(indexBuffer, nzBufferAccess_ReadOnly)
{ {
if (indexBuffer && !indexBuffer->IsSequential())
{
if (indexBuffer->HasLargeIndices()) if (indexBuffer->HasLargeIndices())
{ {
m_getter = Getter32; m_getter = Getter32;
@ -73,6 +90,12 @@ m_mapper(indexBuffer, nzBufferAccess_ReadOnly)
m_getter = Getter16; m_getter = Getter16;
m_setter = SetterError; m_setter = SetterError;
} }
}
else
{
m_getter = GetterSequential;
m_setter = SetterError;
}
} }
NzIndexMapper::NzIndexMapper(const NzSubMesh* subMesh) : NzIndexMapper::NzIndexMapper(const NzSubMesh* subMesh) :