2

MetroのD3D11はをサポートしていませんD3DReflect

なぜだめですか?

私の API はこれを使用して、シェーダーの一定のバッファー サイズを動的に取得します。 オブジェクトなしで D3D11 で動的に一定のバッファー サイズを取得する他の方法はありID3D11ShaderReflectionますか? または、定数変数を名前で取得しますか?

  • Metro 用のシェーダー コンパイラ ツールを作成したい場合はどうすればよいですか?

  • シェーダー生成が必要な複雑なブラシを動的に生成できるアート アプリケーションを作成したかったのです。しかし、これはうまくいきません。

Windows(Desktop)OSXLinuxiOSまたはAndroidにはこれらのシェーダー制限がありますか?

いいえ、では、一体なぜメトロなのですか?

4

1 に答える 1

1

それに関する議論については、http://social.msdn.microsoft.com/Forums/en-US/wingameswithdirectx/thread/9ae33f2c-791a-4a5f-b562-8700a4ab1926を参照してください。

このような制限を設けた理由を説明する公式の立場はありませんが、WinRT での動的コード実行の制限全体と非常によく似ています。残念ながら、あなたのアプリケーションシナリオは不可能です。

ただし、d3dcompiler_xx.dll にハック/パッチを適用し、すべての dll インポートをリダイレクトして、許可された API のみを使用する別の DLL を呼び出すことは可能ですが、それはかなりの作業であり、これが合法であることさえ確信が持てません (元の d3dcompiler から dll コードを削除し、新しい dll を再構築します)。

シナリオの別のオプションは、シェーダーをインターネット経由でサーバーに送信し、サーバーがコンパイルしてバイトコードとリフレクション情報を返すことです...完全にはほど遠いです。

あなたが言及したプラットフォームの中で、おそらくiOSが同じ制限を持つ可能性があるものです(私はこのプラットフォームで開発していないので、確認できません).

于 2012-08-30T06:44:55.740 に答える