我有一个ID3D11Texture2D的句柄,但没有访问它的ID3D11DeviceContext或ID3D11Device。我想将该纹理复制到其他ID3D11Device上的其他纹理。纹理不是用任何共享标志创建的。如果我尝试使用ID3D11DeviceContext :: CopyResource进行复制,则会发出警告“D3D11 CORRUPTION参数与设备不匹配”。我如何复制纹理或其内容?我想这是可能的,因为例如OpenVR API只使用没有任何上下文的纹理句柄。在其他D3D11设备上复制Direct3D11纹理
1
A
回答
2
如果未使用共享标志创建纹理,则不能在两个设备之间使用它。
但你有纹理对象,这是一个ID3D11DeviceChild
,这是足以让访问ID3D11DeviceChild::GetDevice
检索设备,并通过扩展ID3D11Device::GetImmediateContext
现在,您可以访问设备和上下文,你可以使用原始设备上的共享标志D3D11_RESOURCE_MISC_SHARED
或您自己的创建额外纹理,并使用ID3D11Device::OpenSharedResource
检索另一个上的对象。最后将原始纹理复制到新对象中CopyResource
不要忘记,所有这些文章Get
都会在您完成这些操作后,添加对需要释放的对象的引用。
+1
工程就像一个魅力,完美地解决我的问题。非常感谢! – superg
相关问题
- 1. Android - 重复指纹到其他设备
- 2. 将一部分2D纹理复制到另一个Direct3D11
- 3. iOS恢复其他设备上的IAP
- 4. 仿射纹理映射在D3D11/HLSL
- 5. cocos2d - 在设备上找不到纹理
- 6. 从一个D3D11设备复制资源到另一个
- 7. 纹理复制opengl
- 8. iOS5上的GLKit:设置纹理可以防止其他绘图
- 9. iOS Key Chain alternative无法在其他设备上恢复
- 10. WebGL复制纹理framebuffer纹理framebuffer?
- 11. iOS Deeplink在一个设备上工作,但在其他设备上不工作
- 12. 在某些设备上运行但未在其他设备上找到Android类
- 13. 视图仅在1个设备上的按钮和textView上绘制,但不在其他设备上
- 14. 复制纹理对象
- 15. SWIFT:控制其他用户设备上的视图
- 16. 渲染纹理不允许其他纹理显示libgdx java
- 17. 多纹理将无法在另一台设备上工作?
- 18. Unity3D - 将在iOS设备上剪切纹理的着色器
- 19. 在苹果设备上的WebGL纹理红色和闪烁
- 20. 无法在真实设备上使用OpenGL ES映射纹理
- 21. 在某些设备上不显示OpenGL ES 2.0纹理
- 22. 在Linux中复制设备
- 23. 找出其他4个纹理坐标?
- 24. 在另一个纹理上重复纹理的一部分
- 25. Direct3D纹理后处理/复制
- 26. Blinn-Phong底纹HLSL和D3D11:点光源
- 27. getContentLength()在某些设备上返回-1而不是其他设备
- 28. AVAudioPlayer:音量按钮在某些设备上工作,而不是其他设备
- 29. 应用程序适用于某些设备,但在其他设备上崩溃
- 30. Android Studio Error..Work在某些设备上而不是其他设备
如果你不使用共享,你必须通过CPU内存复制它,这将是非常缓慢。 –
@ChuckWalbourn复制纹理到CPU我需要先将它复制到分段纹理中?要做到这一点,我需要设备环境,我没有? – superg
如果没有直接的设备上下文,则不能执行任何复制。 –