2015-09-18 5 views
0

Я полностью новый для DirectX (11), поэтому этот вопрос будет предельно простым. Извини за это.Лучший способ нарисовать куб с твердыми гранями

Я хотел бы нарисовать куб на экране, который имеет сплошные лица. Все примеры, которые я видел, имеют 8 вершин с цветом, определенным в каждой вершине (красный, зеленый, синий). Затем пиксельный шейдер интерполирует между этими вершинами, чтобы получить спектр цветов. Это выглядит неплохо, но этого я не добился. Я просто хотел бы куб с шестью цветными лицами.

Две идеи приходят на ум:

  1. используют 24- вершины, и каждая вершина ссылается только один раз, то есть не делить. Таким образом, я могу определить три разных цвета в каждом трехмерном положении, по одному для каждого лица.
  2. используйте текстуру для каждого лица, которое «растягивается», чтобы дать лицу правильный цвет. Я не очень хорошо знаком с текстурами прямо сейчас, поэтому не все, что в этом уверен.

Каков типичный/канонический способ достижения этого эффекта? Я уверен, что эта «проблема» была решена много раз.

ответ

1

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

В общем, трехмерные объекты окрашены одной или несколькими текстурами. Поэтому вы создаете UV-Mapping (wiki), который разворачивает вас трехмерную поверхность на 2D-плоскость, текстуру. Теперь вы можете рисовать свободно в любом разрешении, которое хотите цвета на вашем объекте, что дает вам максимальную свободу, чтобы модель выглядела так, как вы хотите.

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