Added non-constant access to vertex buffer

Former-commit-id: c0fea611caf6fb48bd0b2ed56897c173f7acad41
This commit is contained in:
Lynix 2012-12-31 11:14:40 +01:00
parent 6fefa3fdd2
commit c73d10ab29
7 changed files with 35 additions and 0 deletions

View File

@ -31,6 +31,7 @@ class NAZARA_API NzKeyframeMesh final : public NzSubMesh
unsigned int GetFrameCount() const;
const NzIndexBuffer* GetIndexBuffer() const override;
void GetVertex(unsigned int frameIndex, unsigned int vertexIndex, NzMeshVertex* dest) const;
NzVertexBuffer* GetVertexBuffer() override;
const NzVertexBuffer* GetVertexBuffer() const override;
void Interpolate(const NzAnimation* animation, unsigned int frameA, unsigned int frameB, float interpolation) const;

View File

@ -42,6 +42,7 @@ class NAZARA_API NzSkeletalMesh final : public NzSubMesh
void* GetBindPoseBuffer();
const void* GetBindPoseBuffer() const;
const NzIndexBuffer* GetIndexBuffer() const override;
NzVertexBuffer* GetVertexBuffer() override;
const NzVertexBuffer* GetVertexBuffer() const override;
NzVertexWeight* GetVertexWeight(unsigned int vertexIndex = 0);
const NzVertexWeight* GetVertexWeight(unsigned int vertexIndex = 0) const;

View File

@ -27,6 +27,7 @@ class NAZARA_API NzStaticMesh final : public NzSubMesh, NzResourceListener
const NzAxisAlignedBox& GetAABB() const override;
nzAnimationType GetAnimationType() const final;
const NzIndexBuffer* GetIndexBuffer() const override;
NzVertexBuffer* GetVertexBuffer() override;
const NzVertexBuffer* GetVertexBuffer() const override;
bool IsAnimated() const final;

View File

@ -33,6 +33,7 @@ class NAZARA_API NzSubMesh : public NzResource
unsigned int GetMaterialIndex() const;
const NzMesh* GetParent() const;
nzPrimitiveType GetPrimitiveType() const;
virtual NzVertexBuffer* GetVertexBuffer() = 0;
virtual const NzVertexBuffer* GetVertexBuffer() const = 0;
virtual unsigned int GetVertexCount() const;

View File

@ -198,6 +198,19 @@ void NzKeyframeMesh::GetVertex(unsigned int frameIndex, unsigned int vertexIndex
dest->uv = m_impl->uv[vertexIndex];
}
NzVertexBuffer* NzKeyframeMesh::GetVertexBuffer()
{
#if NAZARA_UTILITY_SAFE
if (!m_impl)
{
NazaraError("Keyframe mesh not created");
return nullptr;
}
#endif
return m_impl->vertexBuffer;
}
const NzVertexBuffer* NzKeyframeMesh::GetVertexBuffer() const
{
#if NAZARA_UTILITY_SAFE

View File

@ -146,6 +146,19 @@ const NzIndexBuffer* NzSkeletalMesh::GetIndexBuffer() const
return m_impl->indexBuffer;
}
NzVertexBuffer* NzSkeletalMesh::GetVertexBuffer()
{
#if NAZARA_UTILITY_SAFE
if (!m_impl)
{
NazaraError("Skeletal mesh not created");
return nullptr;
}
#endif
return m_impl->vertexBuffer;
}
const NzVertexBuffer* NzSkeletalMesh::GetVertexBuffer() const
{
#if NAZARA_UTILITY_SAFE

View File

@ -100,6 +100,11 @@ const NzIndexBuffer* NzStaticMesh::GetIndexBuffer() const
return m_indexBuffer;
}
NzVertexBuffer* NzStaticMesh::GetVertexBuffer()
{
return m_vertexBuffer;
}
const NzVertexBuffer* NzStaticMesh::GetVertexBuffer() const
{
return m_vertexBuffer;