summaryrefslogtreecommitdiff
path: root/indra/newview/llvovolume.cpp
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2010-02-06 17:33:12 -0600
committerDave Parks <davep@lindenlab.com>2010-02-06 17:33:12 -0600
commitadf601ef1f46e5728988a08068cb2a8b16c7a056 (patch)
tree9dc89a67cd991c4d8a346c419bf2dd47d3b7f1b0 /indra/newview/llvovolume.cpp
parente5a68a626e10e32bab31d676d9db055e97fd93b6 (diff)
Draw prims using triangle strips instead of triangle lists.
Diffstat (limited to 'indra/newview/llvovolume.cpp')
-rw-r--r--indra/newview/llvovolume.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index fbb44c8e76..f1b27fb4df 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1515,7 +1515,14 @@ void LLVOVolume::updateFaceSize(S32 idx)
else
{
const LLVolumeFace& vol_face = getVolume()->getVolumeFace(idx);
- facep->setSize(vol_face.mVertices.size(), vol_face.mIndices.size());
+ if (LLPipeline::sUseTriStrips)
+ {
+ facep->setSize(vol_face.mVertices.size(), vol_face.mTriStrip.size());
+ }
+ else
+ {
+ facep->setSize(vol_face.mVertices.size(), vol_face.mIndices.size());
+ }
}
}
@@ -3265,6 +3272,11 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
draw_info->mExtents[0] = facep->mExtents[0];
draw_info->mExtents[1] = facep->mExtents[1];
validate_draw_info(*draw_info);
+
+ if (LLPipeline::sUseTriStrips)
+ {
+ draw_info->mDrawMode = LLRender::TRIANGLE_STRIP;
+ }
}
}
@@ -3349,7 +3361,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
drawablep->updateFaceSize(i);
LLFace* facep = drawablep->getFace(i);
- if (cur_total > max_total)
+ if (cur_total > max_total || facep->getIndicesCount() <= 0 || facep->getGeomCount() <= 0)
{
facep->mVertexBuffer = NULL;
facep->mLastVertexBuffer = NULL;