Unity中使用SharpDX及Direct3D Helper APIs时d3d11.dll导入问题求解
Unity中使用Direct3D Helper APIs替代导入d3d11.dll的方案
利用Unity内置Direct3D接口绑定
Unity本身对Direct3D有原生支持,无需额外导入d3d11.dll。你可以通过UnityEngine.Rendering命名空间下的CommandBuffer、GraphicsDevice等类访问底层Direct3D资源。比如要获取Direct3D 11设备,可通过GraphicsDevice.Handle拿到原生设备指针,再用SharpDX封装调用——Unity已经加载了系统自带的d3d11.dll,无需手动引入。通过P/Invoke直接调用系统自带的d3d11.dll
d3d11.dll是Windows系统自带的系统库(位于System32目录),不需要打包到Unity项目中。你可以通过P/Invoke直接声明需要的Helper函数,调用系统中的dll副本:[DllImport("d3d11.dll", EntryPoint = "D3D11CreateDevice")] private static extern int D3D11CreateDevice(IntPtr adapter, D3D_DRIVER_TYPE driverType, IntPtr software, uint flags, IntPtr featureLevels, uint featureLevelsCount, uint sdkVersion, out IntPtr device, out D3D_FEATURE_LEVEL featureLevel, out IntPtr immediateContext);这种方式依赖系统自带的dll,无需在项目中包含该文件。
重写Helper方法核心逻辑
如果上述方案不适用,可直接重写Direct3D Helper方法的核心功能。SharpDX的Helper方法大多是原生D3D11 API的封装,你可以参考原生D3D11文档,用Unity支持的C#代码实现对应逻辑,完全绕开对外部Helper库的依赖。
内容的提问来源于stack exchange,提问作者CocoaMilka
相关产品推荐
相关产品推荐

