Yurich » 17.02.2006 (Пт) 1:45
HELP!
Попал я в безвыходную ситуацию. Довожу до ума вьювер Х-файлов и столкнулся с проблемой, которую сам решить пока не в состоянии. Дело вот в чём.
Гружу "сплошной" меш состоящий из 2-х кубиков (субсетов). Каждый кубик имеет свою текстуру, т.е. текстур тоже две. В процессе загрузки считываю и сохраняю вертекс- и индекс- буферы, а также таблицу атрибутов и ссылки на материалы с текстурами. Порядок примерно такой:
Mesh.Optimize
Mesh.GetAttributeTable
D3DXMeshIndexBuffer8GetData
D3DXMeshVertexBuffer8GetData
D3DX.BufferGetMaterial
D3DX.BufferGetTextureName
При отображении Х-формата (Mesh.DrawSubset) проблем не возникает. Всё рисуется правильно.
А дальше начинается головная боль!!!
Все атрибуты меша сохраняю в собственном формате. Затем в процессе загрузки создаю новый меш и кидаю в него всё, что сохранил. В результате картинка состоит из двух геометрически правильных кубиков, но текстура на них ОДИНАКОВА!!!
Думаю, что виновата AttributeTable . ЕСТЬ Ф-Я ДЛЯ ЧТЕНИЯ ИЗ МЕША, А ВОТ КАК ЕЁ ВОТКНУТЬ НАЗАД В МЕШ???
Покопавшись в сети нашел "обходной" способ – рисовать субсеты (минуя Mesh.DrawSubset) через D3DDevice.DrawIndexedPrimitive. Но тут тоже получилась неувязочка – кубики стали неправильными, фактически это уже не кубики, а несвязанные полигоны. То же самое получается при попытке использовать DrawPrimitive и DrawPrimitiveUP. ПОЛНЫЙ ОБЛОМ!!!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!