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(); }
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(); }