D3D11 в Metro не поддерживает D3DReflect? (Почему бы нет?)

D3D11 в Metro не поддерживает D3DReflect.

Почему бы и нет?

Мой API использует это для динамического получения постоянных размеров буфера шейдеров. Есть ли другой способ динамически получить постоянный размер буфера в D3D11 без объекта ID3D11ShaderReflection? Или получить постоянные переменные по имени?

  • Что если я захочу сделать компилятор шейдеров для Metro?

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

Есть ли в Windows(Desktop), OSX, Linux, iOS или Android эти ограничения шейдеров?

Нет, так с какой стати Метро?


person zezba9000    schedule 29.08.2012    source источник
comment
Шшш, мы больше не должны называть это Метро. :)   -  person Filip Skakun    schedule 30.08.2012
comment
Так должен ли я тогда называть его WinRT и ссылаться на Metro так же, как на слой WPF?   -  person zezba9000    schedule 30.08.2012


Ответы (1)


См. http://social.msdn.microsoft.com/Forums/en-US/wingameswithdirectx/thread/9ae33f2c-791a-4a5f-b562-8700a4ab1926, чтобы обсудить это.

Официальной позиции, объясняющей, почему сделали такое ограничение, нет, но оно очень похоже на все ограничение динамического выполнения кода на WinRT. Так что сценарий вашего приложения, к сожалению, невозможен.

Хотя было бы возможно взломать/исправить d3dcompiler_xx.dll и перенаправить весь импорт dll для вызова другой DLL, которая будет использовать только авторизованные API, но это довольно сложная работа, и даже не уверен, что это законно (даже путем извлечения dll из оригинального компилятора d3d и пересборка новой dll).

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

Среди упомянутых вами платформ, вероятно, iOS может иметь такое же ограничение (я не разрабатываю на этой платформе, поэтому не могу это подтвердить).

person xoofx    schedule 30.08.2012
comment
iOS не имеет этого ограничения. Я разработал на всех платформах. Все платформы могут динамически компилировать код шейдера, кроме Metro. Хотя мне очень нравятся ваши идеи для решений, я не хотел бы разрабатывать свой API вокруг них. MS, кажется, пытается заставить людей разрабатывать что-то вокруг их узкого взгляда на то, что представляет собой действительный код. - person zezba9000; 30.08.2012