У меня есть быстрый вопрос о том, какой более правильный подход к чему-то есть.Динамическое изменение в шейдере
Я использую C++ DirectX11 для следующего примера.
Пример: Если вы нажмете клавишу, она активирует текстуры, если вы нажмете другую клавишу, она отключит текстуры.
Подход № 1: Первоначально, как я собирался сделать это, нужно добавить переменную bool в cbuffer, а затем просто передать результат этой переменной для определения того, создает ли шейдер текстуры или нет.
Подход №2: Как я читал книгу, которую я купил на DirectX, я заметил, что у него есть отдельный метод для каждого объекта, а затем для каждого метода он устанавливает кучу переменных, которые передаются в пиксельный шейдер , Я попытался сделать это с приведенным выше примером, чтобы у меня было два метода: один с текстурами и один без текстур, а затем основанный на ключевом вводе, чтобы просто изменить имя метода.
Первоначально второй подход казался мне странным, даже для переменных, которые он задает для каждого объекта, я бы предположил, что было бы лучше передать переменные в переменные cbuffer, а затем просто заключить определенные области с операторами if. Это заставило меня думать, что первый подход к созданию флагов в шейдерах для динамического изменения их может быть плохим способом борьбы с вещами, которые находятся за пределами моего нынешнего понимания, поэтому мне было любопытно, сможет ли кто-нибудь очистить это для меня и объяснить, что вы делаете.