Hello.
Been stuck with this issue afew days now and I come by here for some guidance.
I'm trying to extract ADT data and render it with DX11, I've gotten all the data I need to render however I can't come up with a solutions to render it correctly. See picture below to see what I mean.
How I try to create the vertex buffer:
Code:
for (uint32 c = 0; c < adt.m_MapChunks.size(); ++c)
{
for (uint32 x = 0; x < 8; ++x)
{
for (uint32 y = 0; y < 8; ++y)
{
float ox = adt.m_MapChunks[c].mcnk.IndexX * 7.0f;
float oy = adt.m_MapChunks[c].mcnk.IndexY * 7.0f;
float oz = adt.m_MapChunks[c].mcnk.Position[2];
float L1 = adt.m_MapChunks[c].GetValNoLOD(x, y); // Top left
float L2 = adt.m_MapChunks[c].GetValNoLOD(x, y + 1); // Top right
float L3 = adt.m_MapChunks[c].GetValNoLOD(x + 1, y); // Bottom Left
float L4 = adt.m_MapChunks[c].GetValNoLOD(x + 1, y + 1); // Bottom right
float L = adt.m_MapChunks[c].GetValLOD(x, y); // Center
// Triangle 1 (top)
vertices.push_back(D3DXVECTOR3(ox + y, oy + x, oz + L1));
vertices.push_back(D3DXVECTOR3(ox + y + 1, oy + x, oz + L2));
vertices.push_back(D3DXVECTOR3(ox + y + 0.5f, oy + x + 0.5f, oz + L));
// Triangle 2 (left)
vertices.push_back(D3DXVECTOR3(ox + y, oy + x, oz + L1));
vertices.push_back(D3DXVECTOR3(ox + y, oy + x + 1, oz + L3));
vertices.push_back(D3DXVECTOR3(ox + y + 0.5f, oy + x + 0.5f, oz + L));
// Triangle 3 (bottom)
vertices.push_back(D3DXVECTOR3(ox + y, oy + x + 1, oz + L3));
vertices.push_back(D3DXVECTOR3(ox + y + 1, oy + x + 1, oz + L4));
vertices.push_back(D3DXVECTOR3(ox + y + 0.5f, oy + x + 0.5f, oz + L1));
// Triangle 4 (right)
vertices.push_back(D3DXVECTOR3(ox + y + 1, oy + x, oz + L2));
vertices.push_back(D3DXVECTOR3(ox + y + 1, oy + x + 1, oz + L4));
vertices.push_back(D3DXVECTOR3(ox + y + 0.5f, oy + x + 0.5f, oz + L1));
}
}
}
GetValNoLOD/GetValLOD
Code:
std::vector<float> Vertices;
float GetValNoLOD(int32 x, int32 y)
{
int32 add = y * 8;
int index = (y * 9 + x + add);
return Vertices[index];
}
float GetValLOD(int32 x, int32 y)
{
int32 add = (y + 1) * 9;
return Vertices[(y * 8 + x + add)];
}
Extract vertices from ADT
Code:
for (uint32 i = 0; i < 145; ++i)
mc.Vertices.push_back(m_File.Read<float>(sc.second.GetOffset() + (sizeof(float) * i)));
I've looked everywhere for a solution, WoWDev, forums and multiple open source projects but haven't gotten it to work.
Thank you in advance.