本文整理汇总了C++中THashSet::Insert方法的典型用法代码示例。如果您正苦于以下问题:C++ THashSet::Insert方法的具体用法?C++ THashSet::Insert怎么用?C++ THashSet::Insert使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类THashSet
的用法示例。
在下文中一共展示了THashSet::Insert方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WarmUpRendering
//----------------------------------------------------------------------------
void Node::WarmUpRendering(Renderer* pRenderer)
{
#ifndef WIRE_WII // Wii does not need to warm up by submitting draw calls
WIRE_ASSERT(pRenderer);
UpdateGS(0, true, false);
Vector3F cameraLocation = WorldBound->GetCenter();
cameraLocation.Z() += WorldBound->GetRadius();
Vector3F viewDirection = -Vector3F::UNIT_Z;
Vector3F up = Vector3F::UNIT_Y;
Vector3F right = viewDirection.Cross(up);
CameraPtr spCamera = WIRE_NEW Camera;
spCamera->SetFrame(cameraLocation, viewDirection, up, right);
Float fieldOfView = 60.0F;
Float aspectRatio = 2;
Float nearPlane = 0.1F;
Float farPlane = WorldBound->GetRadius() * 2.0F;
spCamera->SetFrustum(fieldOfView, aspectRatio, nearPlane, farPlane);
CullerSorting culler;
culler.SetCamera(spCamera);
culler.ComputeVisibleSet(this);
pRenderer->PreDraw(spCamera);
// draw scene to warm up batching buffers
pRenderer->Draw(culler.GetVisibleSets());
// collect and draw all materials separately so none will be missed
// by CULL_ALWAYS or Switch/LOD nodes.
THashSet<Material*> materials;
TStack<Node*> scene(1000);
scene.Push(this);
while (!scene.IsEmpty())
{
Node* pNode = NULL;
scene.Pop(pNode);
RenderObject* pRenderObject = pNode->GetRenderObject();
if (pRenderObject && pRenderObject->GetMaterial())
{
materials.Insert(pRenderObject->GetMaterial());
}
for (UInt i = 0; i < pNode->GetQuantity(); i++)
{
Node* pChild = DynamicCast<Node>(pNode->GetChild(i));
if (pChild)
{
scene.Push(pChild);
}
}
}
RenderObjectPtr spCube = StandardMesh::CreateCube24(4, pRenderer->
GetMaxTextureStages(), true);
THashSet<Material*>::Iterator it(&materials);
Transformation transformation;
transformation.SetTranslate(cameraLocation - Vector3F(0, 0, 3));
for (Material** pMaterial = it.GetFirst(); pMaterial; pMaterial =
it.GetNext())
{
spCube->SetMaterial(*pMaterial);
pRenderer->Draw(spCube, transformation);
}
pRenderer->PostDraw();
#endif
}