У меня действительно два вопроса.
Первое - это больше описание событий: программное обеспечение использует DirectX 9 и компилирует шейдеры при запуске из ресурсов.Шейдеры прекрасно работают как с отладочной, так и с выпускной версиями, когда вы запускаете программное обеспечение из среды IDE, но когда вы дважды щелкаете по нему, чтобы запустить его отдельно, вы начинаете получать множество странных ошибок от D3DXCompileShader.
Я объяснил это тем, что Visual Studio конвертировал текстовые файлы шейдера в Unicode и что это как-то вызывает D3DXCompileShader.Почему они компилируются и работают нормально, когда я нахожусь в среде IDE, но не за ее пределами, остается загадкой (обратите внимание, что все равно не получится, если вы запустите его вне VS и затем подключите отладчик к процессу).У кого-нибудь есть мысли по этому поводу?
Мой второй вопрос касается попыток исправить вышесказанное.Вместо того, чтобы иметь свой собственный тип данных ресурса под названием SHADER, я импортировал шейдер как RCDATA, поэтому вместо ручной загрузки текста шейдера из ресурса я теперь могу использовать D3DXCompileShaderFromResource.Я получаю плохой HRESULT от моего вызова к этому, однако, коллекция «ошибок» остается пустой.Отладочного вывода от него нет вообще.Код выглядит следующим образом:
HRESULT result;
result = D3DXCompileShaderFromResource( 0,
MAKEINTRESOURCE(IDR_SHADERPHONG),
NULL,
NULL,
"VERTEXMAIN",
D3DXGetVertexShaderProfile(Window()->GetDevice()),
D3DXSHADER_OPTIMIZATION_LEVEL3,
&MyVertexShaderBuffer,
&errors,
&MyVertexShaderConstants);
HRESULT -2005529767, что, похоже, "не удалось".Я не могу найти никаких ссылок на веб-сайты о том, что это может означать в отношении D3DXCompileShaderFromResource!
Я надеюсь, что мои умные друзья в stackoverflow могут предложить некоторую помощь здесь: p.Спасибо.