Я пытаюсь нарисовать ландшафт, используя Directx9.Я устанавливаю вершины и индексы, но это плохо работает.некоторые полигоны не видны, как эта картинка.почему некоторые полигоны не нарисованы?Как мне решить эту проблему.помогите мне пожалуйста.
приведенный ниже код является частью вершины и индексного буфера после разблокировки.
Структура MYINDEX содержит три индекса каждого типа слова.
Структура TERRAINVERTEX содержит DXVECTOR3 дляположение и DXVECTOR2 для ультрафиолетовой координаты.
TERRAINVERTEX v;
pv = (TERRAINVERTEX *)pVertices;
MYINDEX i;
pi = (MYINDEX*)pIndices;
int offSet = 0;
for (int z = 0; z < m_iCz-1; ++z)
{
for (int x = 0; x < m_iCx-1; ++x)
{
// left top
v.point.x = (float)((x - m_iCx / 2) * m_vfScale.x);
v.point.z = -(float)((z - m_iCz / 2) * m_vfScale.z);
v.point.y = 0.0f;
v.texture.x = 0;
v.texture.y = 0;
pi->i_0 = offSet++;
*pv++ = v;
//right top
v.point.x = (float)(((x+1 - m_iCx / 2) * m_vfScale.x));
v.point.z = -(float)((z - m_iCz / 2) * m_vfScale.z);
v.point.y = 0.0f;
v.texture.x = 1;
v.texture.y = 0;
pi->i_1 = offSet++;
*pv++ = v;
//left down
v.point.x = (float)(((x - m_iCx / 2) * m_vfScale.x));
v.point.z = -(float)((z + 1 - m_iCz / 2) * m_vfScale.z);
v.point.y = 0.0f;
v.texture.x = 0;
v.texture.y = 1;
pi->i_2 = offSet++;
*pv++ = v;
++pi;
//right down
v.point.x = (float)(((x + 1 - m_iCx / 2) * m_vfScale.x));
v.point.z = -(float)((z + 1 - m_iCz / 2) * m_vfScale.z);
v.point.y = 0.0f;
v.texture.x = 1;
v.texture.y = 1;
pi->i_0 = offSet++;
*pv++ = v;
//left down
v.point.x = (float)(((x + 1 - m_iCx / 2) * m_vfScale.x));
v.point.z = -(float)((z + 1 - m_iCz / 2) * m_vfScale.z);
v.point.y = 0.0f;
v.texture.x = 0;
v.texture.y = 1;
pi->i_1 = offSet++;
*pv++ = v;
//right top
v.point.x = (float)(((x + 1 - m_iCx / 2) * m_vfScale.x));
v.point.z = -(float)((z - m_iCz / 2) * m_vfScale.z);
v.point.y = 0.0f;
v.texture.x = 1;
v.texture.y = 0;
pi->i_2 = offSet++;
*pv++ = v;
++pi;
}
}