本文整理汇总了C++中LLSpatialPartition::asBridge方法的典型用法代码示例。如果您正苦于以下问题:C++ LLSpatialPartition::asBridge方法的具体用法?C++ LLSpatialPartition::asBridge怎么用?C++ LLSpatialPartition::asBridge使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LLSpatialPartition
的用法示例。
在下文中一共展示了LLSpatialPartition::asBridge方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: renderAlphaHighlight
void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask, std::vector<LLSpatialGroup*>& groups)
{
#if !LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkClientArrays(mask);
#endif
LLSpatialBridge* last_bridge = NULL;
LLSpatialPartition* last_part = NULL;
glPushMatrix();
for (std::vector<LLSpatialGroup*>::iterator i = groups.begin(); i != groups.end(); ++i)
{
LLSpatialGroup* group = *i;
if (group->mSpatialPartition->mRenderByGroup &&
!group->isDead())
{
LLSpatialPartition* part = group->mSpatialPartition;
if (part != last_part)
{
LLSpatialBridge* bridge = part->asBridge();
if (bridge != last_bridge)
{
glPopMatrix();
glPushMatrix();
if (bridge)
{
glMultMatrixf((F32*) bridge->mDrawable->getRenderMatrix().mMatrix);
}
last_bridge = bridge;
}
last_part = part;
}
LLSpatialGroup::drawmap_elem_t& draw_info = group->mDrawMap[LLRenderPass::PASS_ALPHA];
for (LLSpatialGroup::drawmap_elem_t::iterator k = draw_info.begin(); k != draw_info.end(); ++k)
{
LLDrawInfo& params = **k;
if (params.mParticle)
{
continue;
}
params.mVertexBuffer->setBuffer(mask);
U32* indices_pointer = (U32*) params.mVertexBuffer->getIndicesPointer();
glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount,
GL_UNSIGNED_INT, indices_pointer+params.mOffset);
addIndicesDrawn(params.mCount);
}
}
}
glPopMatrix();
}
示例2: renderAlpha
void LLDrawPoolAlpha::renderAlpha(U32 mask, std::vector<LLSpatialGroup*>& groups)
{
#if !LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkClientArrays(mask);
#endif
LLSpatialBridge* last_bridge = NULL;
LLSpatialPartition* last_part = NULL;
glPushMatrix();
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
for (std::vector<LLSpatialGroup*>::iterator i = groups.begin(); i != groups.end(); ++i)
{
LLSpatialGroup* group = *i;
if (group->mSpatialPartition->mRenderByGroup &&
!group->isDead())
{
LLSpatialPartition* part = group->mSpatialPartition;
if (part != last_part)
{
LLSpatialBridge* bridge = part->asBridge();
if (bridge != last_bridge)
{
glPopMatrix();
glPushMatrix();
if (bridge)
{
glMultMatrixf((F32*) bridge->mDrawable->getRenderMatrix().mMatrix);
}
last_bridge = bridge;
}
// if (!last_part || part->mDepthMask != last_part->mDepthMask)
// {
// glDepthMask(part->mDepthMask);
// }
last_part = part;
}
renderGroupAlpha(group,LLRenderPass::PASS_ALPHA,mask,TRUE);
}
}
glPopMatrix();
}