Многочисленные артефакты (кроме ломаных краев пересечения ландшафта с водой) вызваны неправильным использованием функции, вместо:
- Код: Выделить всё
D3DDevice.SetRenderState D3DRS_ZENABLE, TRUE
должно быть так:
- Код: Выделить всё
D3DDevice.SetRenderState D3DRS_ZENABLE, D3DZB_TRUE
Ломаные края вызваны чрезмерной глубиной Z-буфера, если матрицу проекции определить так:
- Код: Выделить всё
D3DXMatrixPerspectiveFovLH matProj, PI / 4, 1, 1, 1000
то все станет нормально, но исчезнет небо. Все потому, что оно сделано НЕПРАВИЛЬНО, оно не должно быть огромным, чтобы не искажаться при перемещении камеры, оно должно быть ЛЮБОГО размера в пределах заданной матрицы проекции (от 1 до 1000), и оно должно перемещаться в позицию камеры. Кажется я уже писал тебе про это и даже давал пример. И небо должно рисоваться с выключенным Z-буфером ДО травы, тогда на траве не будет темных краев.