C# directx(sharpDX)在GPU上而不是CPU上对图像应用效果

C# directx(sharpDX)在GPU上而不是CPU上对图像应用效果,c#,gpu,sharpdx,C#,Gpu,Sharpdx,对于一个项目,我有一个图像,它有成千上万的注释(比如圆、字符串、线、叉),我必须在屏幕上显示。基本上,假设我有50000个注释。现在,我想使用CPU在我的屏幕上绘制这些注释,使它们在加载到我的屏幕和GPU后使用deviceContext.DrawCircle(或line或cross…)绘制。我希望能够在不需要在CPU上重新绘制所有50000条注释的情况下进行缩放,因为这需要大约1秒的时间,而这对于图像缩放来说太长了 我的问题是:有没有一种方法可以在不需要重新绘制所有这些组件并循环所有组件的情况下

对于一个项目,我有一个图像,它有成千上万的注释(比如圆、字符串、线、叉),我必须在屏幕上显示。基本上,假设我有50000个注释。现在,我想使用CPU在我的屏幕上绘制这些注释,使它们在加载到我的屏幕和GPU后使用deviceContext.DrawCircle(或line或cross…)绘制。我希望能够在不需要在CPU上重新绘制所有50000条注释的情况下进行缩放,因为这需要大约1秒的时间,而这对于图像缩放来说太长了


我的问题是:有没有一种方法可以在不需要重新绘制所有这些组件并循环所有组件的情况下缩放这些注释和图像。我的缩放最大需要50毫秒,因此我希望直接在GPU上进行这些更改,而不是回到CPU上,应用更改并将其重新绘制到屏幕上…

您可以使用rendertarget | shaderresourceview并绘制到它。如果是这样,您可以轻松地将其用作例如平面的纹理。这将进行一次大的drawcall,然后您可以随心所欲地缩放,而不会影响性能。一个好的优化方法是使用两个渲染目标进行绘制和显示,然后在当前屏幕上交换它们。。。因此,您可以与它们异步工作,而不会发生访问冲突