Commit 4a1a0677 authored by lukeph's avatar lukeph

fixed a slow down in terrain nodes.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1572 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 038d839e
......@@ -505,6 +505,24 @@ namespace scene
}
void CTerrainSceneNode::preRenderIndicesCalculations()
{
switch (RenderBuffer->getIndexBuffer().getType())
{
case video::EIT_16BIT:
{
preRenderIndicesCalculationsDirect<u16>((u16*)RenderBuffer->getIndexBuffer().pointer());
break;
}
case video::EIT_32BIT:
{
preRenderIndicesCalculationsDirect<u32>((u32*)RenderBuffer->getIndexBuffer().pointer());
break;
}
}
}
template<class INDEX_TYPE>
void CTerrainSceneNode::preRenderIndicesCalculationsDirect(INDEX_TYPE* IndexBuffer)
{
IndicesToRender = 0;
s32 index11;
......@@ -534,12 +552,12 @@ namespace scene
index12 = getIndex( j, i, index, x, z + step );
index22 = getIndex( j, i, index, x + step, z + step );
RenderBuffer->getIndexBuffer().setValue(IndicesToRender++, index12);
RenderBuffer->getIndexBuffer().setValue(IndicesToRender++,index11);
RenderBuffer->getIndexBuffer().setValue(IndicesToRender++, index22);
RenderBuffer->getIndexBuffer().setValue(IndicesToRender++, index22);
RenderBuffer->getIndexBuffer().setValue(IndicesToRender++, index11);
RenderBuffer->getIndexBuffer().setValue(IndicesToRender++, index21);
IndexBuffer[IndicesToRender++]= index12;
IndexBuffer[IndicesToRender++]= index11;
IndexBuffer[IndicesToRender++]= index22;
IndexBuffer[IndicesToRender++]= index22;
IndexBuffer[IndicesToRender++]= index11;
IndexBuffer[IndicesToRender++]= index21;
// increment index position horizontally
x += step;
......@@ -564,6 +582,10 @@ namespace scene
}
//! Render the scene node
void CTerrainSceneNode::render()
{
......
......@@ -279,6 +279,9 @@ namespace scene
virtual void preRenderLODCalculations();
virtual void preRenderIndicesCalculations();
template<class INDEX_TYPE>
void preRenderIndicesCalculationsDirect(INDEX_TYPE* IndexBuffer);
//! get indices when generating index data for patches at varying levels of detail.
u32 getIndex(const s32 PatchX, const s32 PatchZ, const s32 PatchIndex, u32 vX, u32 vZ) const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment