Индексные буферы Directx9 и несколько потоков - PullRequest
1 голос
/ 21 февраля 2010

Я пытаюсь написать загрузчик 3DS, который имеет реализацию рендеринга OpenGL для использования в моей общей системе рендеринга.

Проблема здесь в том, что у меня есть вершины, проиндексированные для одного массива, и координаты текстуры, проиндексированные для другого. Я не хочу создавать новый набор индексов и исходных вершин, проверяя каждую вершину комбинацией координат и текстурных координат, так как я могу оптимально указать два массива в буферах в DirectX?

Что я хотел бы, так это иметь 3 буфера вершин, один для вершин, один для координат текстуры и один для нормалей вершин. Тогда у меня были бы индексные буферы для всех трех. Я не знаю, как бы я это сделал.

Я работаю в DirectX9 и C ++

1 Ответ

3 голосов
/ 21 февраля 2010

Дело в том, что если речь идет о графической карте, если две вершины имеют одинаковое положение и разные текс-координаты (или разные вершинные элементы), то это разные вершины. Они будут сохранены на карте с координатами позиции / текс, дублированными, что бы вы ни делали в OpenGL (драйвер просто неявно расширяет вершины). DirectX заставляет вас сделать это.

Несколько потоков немного отличаются, но расширяются до одного и того же. т.е. у вас есть только одно значение индекса в обоих потоках.

Итак, оптимально, вам нужно объединить оба списка в один большой список и соответствующим образом настроить единый список индексов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...