本文整理汇总了C++中VertexDeclaration::GetElementParam方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexDeclaration::GetElementParam方法的具体用法?C++ VertexDeclaration::GetElementParam怎么用?C++ VertexDeclaration::GetElementParam使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexDeclaration
的用法示例。
在下文中一共展示了VertexDeclaration::GetElementParam方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FillVertexBuffer
void RBExport::FillVertexBuffer( BYTE* pVert, const VertexDeclaration& vertexDecl,
int startVert, int nVert )
{
int stride = vertexDecl.m_VertexSize;
// positions
BYTE* pV = pVert;
for (int i = 0; i < nVert; i++)
{
*((Vec3*)pV) = m_Vertices[startVert + i]->pos;
pV += stride;
}
// normals
int offset = -1;
int size = 0;
if (m_pConfig->m_bExportNormals &&
vertexDecl.GetElementParam( VertexComponent_Normal, offset, size ))
{
pV = pVert + offset;
for (int i = 0; i < nVert; i++)
{
*((Vec3*)pV) = m_Vertices[startVert + i]->normal;
pV += stride;
}
}
// binormals/tangents
// vertex colors
if (m_pConfig->m_bExportVertexColors &&
vertexDecl.GetElementParam( VertexComponent_Diffuse, offset, size ))
{
pV = pVert + offset;
for (int i = 0; i < nVert; i++)
{
*((DWORD*)pV) = m_Vertices[startVert + i]->color;
pV += stride;
}
}
// uv's
if (vertexDecl.GetElementParam( VertexComponent_TexCoor0, offset, size ))
{
pV = pVert + offset;
for (int i = 0; i < nVert; i++)
{
*((Vec2*)pV) = m_Vertices[startVert + i]->uv;
pV += stride;
}
}
// blend weights/indices
if (vertexDecl.GetElementParam( VertexComponent_Blend, offset, size ))
{
pV = pVert + offset;
for (int i = 0; i < nVert; i++)
{
const ExpVertex* curV = m_Vertices[startVert + i];
*((DWORD*)pV) = curV->GetPackedBoneW();
*((DWORD*)(pV + 4)) = curV->GetPackedBoneIdx();
pV += stride;
}
}
} // RBExport::FillVertexBuffer