Я собираюсь задать относительно общий вопрос.
Я использую VC ++ 2010, программирую приложение Direct X9 с помощью компонента шейдера. Программа прекрасно компилируется, рисует светлый и текстурированный квадрат. Проблема в том, что, хотя конец программы на c ++ работает нормально, а изменения, такие как изменение цвета освещения или положения текстуры, работают нормально, все изменения в файле .fx игнорируются. Фактически удаление файла из указанного каталога фактически не влияет на программу.
Это проблема компилятора? Конечно, файл HLSL не бесполезен, я имею в виду, что я передаю переменные ему, так, куда они могли бы пойти?
main.cpp: mediafire.com/?9n4llrclcfohqfb
transform.fx: mediafire.com/?jqach463p2vcqhz
Шейдеры не перекомпилируются на лету, поэтому, если вы изменяете код шейдера во время работы вашей программы, вам нужно снова вызвать D3DXCreateEffectFromFile, чтобы создать новый скомпилированный экземпляр вашего шейдера.
Ух ты, на самом деле это довольно позорно, оказывается, что я забыл отредактировать каталог .fx-файла в функции D3DXCreateEffectFromFile, поэтому редактируемый файл, конечно, не оказал влияния на приложение. Спасибо за вашу помощь.