D3D11 in Metro不支持D3DReflect。
为什么不呢?
我的API使用它来动态获取着色器的常量缓冲区大小。在没有ID3D11ShaderReflection 对象的情况下,D3D11中是否有其他方法动态获取常量缓冲区大小?还是按名称获取常量变量?
Windows(Desktop),OSX、Linux、iOS或Android有这些限制吗?
不,那怎么会有地铁呢?
发布于 2012-08-30 06:44:55
有关它的一些讨论,请参见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具有相同的限制(我没有在这个平台上开发,所以我无法确认)。
https://stackoverflow.com/questions/12187008
复制相似问题