Вот ещё такой вопрос возник: пытаюсь отрисовать тайл средствами OpenGL. Чанки по отдельности отрисовываются замечательно, но как только пытаюсь их объединить вместе получается полный бред. Отрисовкой конкретного чанка занимается этот код:
Код:
public void DrawMap(MCNK adt_MCNK)
{
foreach (Chunk subchunk in adt_MCNK.subchunksList)
{
if (subchunk.chunkname == "MCVT")
{
MCVT adt_MCVT = (MCVT)subchunk;
for (int x = 0; x < 8; x++)
{
for (int y = 0; y < 8; y++)
{
float nL1 = adt_MCVT.getValNoLOD(x, y);
float nL2 = adt_MCVT.getValNoLOD(x, y + 1);
float nL3 = adt_MCVT.getValNoLOD(x + 1, y);
float nL4 = adt_MCVT.getValNoLOD(x + 1, y + 1);
float L = adt_MCVT.getValLOD(x, y);
int XOff = adt_MCNK.IndexX * 7;
int YOff = adt_MCNK.IndexY * 7;
glVertex3f(XOff + y, YOff + x, nL1);
glVertex3f(XOff + y + 1, YOff + x, nL2);
glVertex3f(XOff + y + 0.5f, YOff + x + 0.5f, L);
glVertex3f(XOff + y, YOff + x, nL1);
glVertex3f(XOff + y, YOff + x + 1, nL3);
glVertex3f(XOff + y + 0.5f, YOff + x + 0.5f, L);
glVertex3f(XOff + y, YOff + x + 1, nL3);
glVertex3f(XOff + y + 1, YOff + x + 1, nL4);
glVertex3f(XOff + y + 0.5f, YOff + x + 0.5f, L);
glVertex3f(XOff + y + 1, YOff + x, nL2);
glVertex3f(XOff + y + 1, YOff + x + 1, nL4);
glVertex3f(XOff + y + 0.5f, YOff + x + 0.5f, L);
}
}
break;
}
}
}
Получается вот так:
https://www.dropbox.com/s/t8flx5tibn...2015.18.54.png
Там какая-то особая последовательность чанков должна быть?