Я пытаюсь получить текстуры, работающие над моим загрузчиком OBJMesh. До сих пор я изучал некоторые онлайн-учебники о том, как это сделать, и наиболее очевидным примером является пример куба/ящика, который я понял. Но я столкнулся с этой проблемой, когда вершина может использовать/иметь более 1 текстурных коордов.Загрузка текстурных коордов для OBJMesh в DirectX9/C++
Например:
f 711/1/1 712/2/2 709/3/3
f 711/9/1 704/10/9 712/11/2
Как вы можете видеть, индекс вершина номер 711 использует текстуры COORDS номер 1 и 9 и индекс вершина номер 712 использует текстуры COORDS номер 2 и 11. Таким образом, мой вопрос заключается в том я могу заставить его работать с несколькими текстурными коордами? Есть ли какой-то буфер, который я могу использовать, например, буфер вершин и буфер индексов?
Я использую индексы для этого и у меня есть следующие объявления вершин:
D3DVERTEXELEMENT9 vertexElement[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
D3DDECL_END()};
device->CreateVertexDeclaration(vertexElement, &vertexDec);
А моя вот моя структура вершины:
struct VERTEX{
D3DXVECTOR3 position;
D3DXVECTOR2 uv;
D3DCOLOR color;
};
не слишком уверен, что другой код, чтобы показать здесь, но если я отсутствую, или вы, ребята, должны что-то увидеть, чтобы помочь мне, дайте мне знать.
Благодаря
EDIT: было бы лучше, если я использую FVF вместо деклараций вершин?
Нет, вам нужно добавить несколько вершин с одинаковым положением и разными координатами текстуры в буфер вершины. –
@NicoSchertler серьезно не может обойти это? Я действительно не могу поверить, что directX не предлагает что-то, чтобы обойти эту проблему ... – Danny
Нет другого пути. –