Directx 将纹理复制到纹理

Directx 将纹理复制到纹理,directx,textures,directx-10,direct3d,Directx,Textures,Directx 10,Direct3d,我已经完成了两个使用共享资源的程序,运行在SlimDX和DirectX10上。一个程序将在3D网格上显示共享纹理。第二个程序将加载图像作为纹理。到目前为止,每次从新图像更新纹理时,我都需要传递共享句柄 现在,有没有一种方法可以初始化固定大小的共享纹理(Texture2D),然后每次加载新图像时,我需要做的就是将其加载为纹理,然后将其复制到现有纹理。这样共享句柄就不会改变,我可以节省传递共享句柄的一些开销。对于DirectX9,我确实知道有一个函数可以做到这一点,“StretchRectangle

我已经完成了两个使用共享资源的程序,运行在SlimDX和DirectX10上。一个程序将在3D网格上显示共享纹理。第二个程序将加载图像作为纹理。到目前为止,每次从新图像更新纹理时,我都需要传递共享句柄

现在,有没有一种方法可以初始化固定大小的共享纹理(Texture2D),然后每次加载新图像时,我需要做的就是将其加载为纹理,然后将其复制到现有纹理。这样共享句柄就不会改变,我可以节省传递共享句柄的一些开销。对于DirectX9,我确实知道有一个函数可以做到这一点,“StretchRectangle”,但我在DirectX10中找不到它或任何类似的函数

中间格式可以是任何东西,甚至是曲面,只要我将其更新为共享纹理


谢谢

那么CopyResource()或CopySubresourceRegion()呢?我不知道SlimDX,但它们在本机D3D10中应该可以正常工作。

CopyResource不起作用。CopySubresourceRegion也不起作用,但我可能设置错了。你有工作代码吗?我只需要成功复制纹理的代码。我会处理共享句柄的,谢谢。你可以更具体地说“不起作用?”会发生什么?如果在CreateDevice期间启用调试层,调试输出中是否有任何警告或错误?这些调用是从一种纹理复制到另一种纹理的主要方式,因此如果它们不起作用,我一定是对您最初的问题产生了误解。很抱歉错误信息。它没有通过纹理。但我今天才意识到,事实上,我需要处理纹理,然后第一个程序将显示纹理。所以现在我决定使用copyrource()。但每次重新加载时都必须重新创建纹理。是否是“锁定”导致第一个程序无法读取纹理?不确定“锁定”是什么意思。共享曲面很棘手:因为渲染命令(包括Copy*())由DX排队,所以在从共享曲面读取之前,您需要以某种方式确保队列已刷新,并且命令已完成。处理纹理可能会隐式地执行此操作。在C++中,你将使用IDXGIKEDDIFX接口来完成这一任务,而不破坏和重新创建源纹理;我不知道SlimDX中是否提供此功能。