Как можно избежать "clean+build" вместо "build" в моем решении VS2012?
Я программирую шейдер в DirectX (SharpDX). Дело в том, что я заметил, что мне нужно чистить, а затем собирать каждый раз, когда я что-то меняю в шейдере (файл.fx). Есть ли способ избежать этого? До того, как я внес некоторые изменения, казалось, что "Build" было достаточно, чтобы применить изменения... Например. Если я возвращаю красный цвет для линии. Я могу изменить цвет на зеленый, сборка, и я все еще увижу его красным. Если я чищу + строю, я вижу изменения (строки зеленого цвета).
Я думал, что это может иметь отношение к некоторой очистке буфера, но я не совсем уверен.
Большое спасибо за любую идею.
1 ответ
Если я правильно помню, компилятор шейдеров идет и компилирует ваши шейдеры в байт-код.fxc. Я полагаю, что Visual Studio не отслеживает изменения "внешних файлов" (т.е. не C#/C/C++/ любых файлов кода), поэтому, когда программа запускается, она захватывает уже скомпилированный код.fxc, который не имеет новые изменения. Очистка удаляет эти предварительно скомпилированные файлы, вызывая перекомпиляцию. Самый простой способ решить эту проблему - добавить пользовательский шаг сборки в Свойства проекта, чтобы вручную запустить компилятор шейдера DirectX (fxc.exe) на вашем шейдере. С ним вы потеряете приятный материал на странице свойств (при условии, что вы использовали их в первую очередь), но каждый раз, когда вы компилируете свой проект, он будет перекомпилировать ваши шейдеры.