本文整理汇总了C++中Visual::UpdateModelBound方法的典型用法代码示例。如果您正苦于以下问题:C++ Visual::UpdateModelBound方法的具体用法?C++ Visual::UpdateModelBound怎么用?C++ Visual::UpdateModelBound使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Visual
的用法示例。
在下文中一共展示了Visual::UpdateModelBound方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Update
bool SkinController::Update(double applicationTime)
{
if (!Controller::Update(applicationTime))
{
return false;
}
if (mFirstUpdate)
{
mFirstUpdate = false;
OnFirstUpdate();
}
if (mCanUpdate)
{
// The skin vertices are calculated in the bone world coordinate system,
// so the visual's world transform must be the identity.
Visual* visual = reinterpret_cast<Visual*>(mObject);
visual->worldTransform = Transform::IDENTITY;
visual->worldTransformIsCurrent = true;
// Compute the skin vertex locations.
char* current = mPosition;
for (int vertex = 0; vertex < mNumVertices; ++vertex)
{
Vector4<float> position{ 0.0f, 0.0f, 0.0f, 0.0f };
for (int bone = 0; bone < mNumBones; ++bone)
{
float weight = mWeights[vertex][bone];
if (weight != 0.0f)
{
Vector4<float> offset = mOffsets[vertex][bone];
#if defined (GTE_USE_MAT_VEC)
Vector4<float> worldOffset =
mBones[bone]->worldTransform * offset;
#else
Vector4<float> worldOffset =
offset * mBones[bone]->worldTransform;
#endif
position += weight * worldOffset;
}
}
Vector3<float>* target =
reinterpret_cast<Vector3<float>*>(current);
(*target)[0] = position[0];
(*target)[1] = position[1];
(*target)[2] = position[2];
current += mStride;
}
visual->UpdateModelBound();
visual->UpdateModelNormals();
mPostUpdate(visual->GetVertexBuffer());
return true;
}
return false;
}