Я пытаюсь чередовать данные вершин в контейнер STL векторного шаблона std. Я успешно сделал это с OpenGL уже, исходный код моего интерфейса сетки доступен в Интернете для моего проекта с открытым исходным кодом ... https://github.com/RobertBColton/enigma-dev/blob/master/ENIGMAsystem/SHELL/Graphics_Systems/OpenGL3/GL3model.cppDirect3D 9.0 Interleaved non-fvf Vertex Buffer
Теперь я хочу сделать тот же метод с помощью DirectX и уже успел это сделать частично путем логического xor'ing моего FVF DWORD вместе с тем, какие компоненты каждой вершины у меня есть. Однако это то, что сетка в настоящее время оказывает как тогда, когда он содержит только вершины и нормаль ... http://oi42.tinypic.com/2diq2dw.jpg
Теперь DX делает это очень трудно для меня, чтобы сделать то же самое, что я делал в OGL, я проверил, проверил , и проверяется снова и снова, и мое выравнивание байтов отлично в буфере. То, что я пытаюсь сделать, может быть лучше объяснить OpenGL Wiki ... /вики/Vertex_Specification_Best_Practices # Formatting_VBO_Data
Теперь я не хочу, чтобы реализовать шейдер для достижения этой цели либо. Если бы кто-нибудь мог просто предложить мне какие-либо указания на то, что я пытаюсь сделать, или указать мне в сторону примера или учебника по этому поводу в Direct3D 9, это действительно поможет мне, поскольку это, похоже, не очень распространенная практика в DX ,
Если вы прочитали лучшие рекомендации по спецификации вершин, в нем также говорится, что вы не должны использовать цвета с плавающей запятой. RGB float - это формат, совместимый с T & L, на старом оборудовании, но RGBA - нет. RGBA ubyte T & L-friendly, а также занимает 1/4 места для хранения. RGBA ubyte также используется в формате D3D для таких вещей, как D3DFVF_DIFFUSE, хотя он находится в заказе ARGB. –
Привет за ваш ответ! Но что касается triangleCount, это не количество треугольников, то есть количество элементов по индексам, я думаю, вы были немного запутаны в этой части моего кода. Версия OpenGL уже работает отлично http://oi39.tinypic.com/2w53cqv.jpg. Но спасибо за информацию о том, что это действительно полезно, есть ли у вас какие-либо предложения, как я могу изменить его, так как я использую вектор типа gs_scalar (который означает графический системный скаляр, по умолчанию - float)? – Goombert
Что я хотел бы сделать, это использовать std :: vector вместо std :: vector . Это обычный подход к перемеженным форматам. Что-то вроде struct {float pos [3]; float normal [3]; Цвет DWORD; float tex_st [2]; } // <- D3D9 ... D3D имеет макрос, который можно использовать для упаковки цветов с плавающей запятой в DWORD, 'D3DCOLOR_COLORVALUE (r, g, b, a)'. При правильном формате и типе данных для цвета вершин ('GL_BGRA',' GL_UNISNGED_BYTE') вы также должны иметь возможность использовать эту структуру данных в операционных системах OpenGL. –