Bonesnapper » 26.02.2007 (Пн) 13:31
НЕ возможно трианглстрипом за раз нарисовать весь ландшафт
если надо за раз то используй триангл лист
Init:
For z = 1 To SizeY - 1
For x = 1 To SizeX - 1
iBuf(i) = (z - 1) * SizeX + (x - 1): i = i + 1
iBuf(i) = (z - 0) * SizeX + (x - 1): i = i + 1
iBuf(i) = (z - 1) * SizeX + (x - 0): i = i + 1
iBuf(i) = (z - 1) * SizeX + (x - 0): i = i + 1
iBuf(i) = (z - 0) * SizeX + (x - 1): i = i + 1
iBuf(i) = (z - 0) * SizeX + (x - 0): i = i + 1
Next x
Next z
render:
d3dDev.DrawIndexedPrimitiveUP D3DPT_TRIANGLELIST, 0&, m_NumVertices, m_NumIndices / 3, iBuf(0&), D3DFMT_INDEX32, vBuf(0&), SizeOfVertex
если же хочется рисовать стрипом то тогда рисуем по 1 линии за проход
Init:
ReDim iBuf((SizeX - 1) * 2 + 1) As Long
i = 0
For x = 0& To SizeX - 1
iBuf(x * 2&) = x
iBuf(x * 2& + 1&) = SizeX + x
Next x
render:
For i = 0 To SizeY - 2
d3dDev.DrawIndexedPrimitiveUP D3DPT_TRIANGLESTRIP, 0&, SizeX * 2, SizeX * 2 - 2, iBuf(0&), D3DFMT_INDEX32, vBuf(SizeX * i), SizeOfVertex
Next i