Подскажите, пожалуйста, как получить корректное освещение объекта, используя вершинный и индексный буфер.
Можно объявить формат вершин, и структуру:
#define VERTEX_FORMAT (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX0)
struct Vertex{ FLOAT x, y, z; FLOAT nx, ny, nz; FLOAT u, v;};
Но дело в том, что при использовании индексного буфера, одна и та же вершина участвует в рисовании нескольких треугольников, которые в общем случае лежат в разных плоскостях. Поэтому эта вершина должна иметь несколько нормалей, в зависимости от того к какому треугольнику она относится в данный момент. А так как в структуре Vertex хранится только одна нормаль, то непонятно как добиться желаемого результата.
Использование средней нормали не подходит. Узнать больше о Проблема с нормалями в Direct3D.