Ультрафиолетовое отображение не работает без дублирования вершин, но дублирование снижает производительность, не так ли? Есть ли другое решение?

Ситуация: Я пытаюсь постепенно получить более низкий и более низкий уровень понимания того, как работают игры, и в последнее время я слежу за Учебники DirectX 11 от Rastertek . Конечно, я начал разворачиваться самостоятельно и экспериментировать, как хороший маленький программист.

Я заметил, что учебник имел набор из трех вершин для каждого треугольника, даже если это означало дублирование вершин, которые были там в любом случае. Таким образом, куб имел бы 12 треугольников * 3 вершины /треугольник = 36 вершин, когда ему понадобилось только 8. Это похоже на то, что он может значительно снизить производительность в более сложных моделях.

Однако, когда я попытался установить индексы для повторного использования вершин, я столкнулся с проблемами, потому что нормальные и УФ-координаты назначены каждой вершине. Я усреднил нормальные векторы, которые привели к сглаживанию освещения там, где он, вероятно, не должен был быть гладким, и УФ-координаты ... ну ... прямо сейчас они переписывают друг друга, когда они импортируют, что приводит к сумасшедшим вещам, например: http://i.stack.imgur.com/Rr6aB.jpg

Мои мысли: Сейчас я вижу одно разумное решение. Когда УФ-картографирование в Blender, мне пришлось создать «швы», которые была развернута моделью и бла-бла, я уверен, что вы знаете, что это такое. Во всяком случае, я мог бы дублировать вершины только на этих швах, что очень эффективно решает как производительность, так и текстурирование.

Это не потребует значительных изменений в коде, который я сейчас имею, но алгоритмы экспорта Blender, похоже, не сотрудничают с этим подходом. По крайней мере, не в формате .obj. Правильный подход к правильному подходу выглядит вполне возможным, но также досадно трудно.

Наконец, вопрос: Итак, теперь я здесь, набрав для вас людей. Я на правильном пути? Или есть совсем другой подход, о котором я еще не думал? Каков нормальный способ сделать это?

Конечно, другой вопрос заключается в том, будут ли дублирующие вершины подобными действительно влиять на производительность? Мое предположение может быть ошибочным.

5 голосов | спросил Icy Defiance 9 FebruaryEurope/MoscowbSat, 09 Feb 2013 23:58:44 +0400000000pmSat, 09 Feb 2013 23:58:44 +040013 2013, 23:58:44

1 ответ


5

Производительность не должна быть затронута вообще, она просто займет небольшое количество дополнительной памяти. Аппарат рисует треугольники независимо друг от друга, единственное различие между ними состоит в том, что один без дубликатов будет просто считывать несколько раз с одного и того же адреса памяти, а тот, у которого есть дубликаты, будет считываться с отдельных адресов памяти.

Хотя это может показаться пустой тратой, это необходимо, потому что эти вершины уникальны. В вершине больше, чем в позиции. Две вершины с одинаковым положением, но разные координаты /нормали текстуры - это не одна и та же вершина.

ответил Robert Rouhani 10 FebruaryEurope/MoscowbSun, 10 Feb 2013 01:02:16 +0400000000amSun, 10 Feb 2013 01:02:16 +040013 2013, 01:02:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132