directx(sharpDX)将效果应用于GPU上的图像而不是CPU

时间:2017-06-23 12:21:12

标签: c# gpu sharpdx

对于一个项目,我有一个图像,它必须在屏幕上显示数千个注释(例如圆形,字符串,线条,交叉)。基本上,我们说我有5万个注释。现在,我想用CPU绘制他们的屏幕来循环所有这些注释,使用deviceContext.DrawCircle(或行或交叉...)绘制它们。一旦加载到我的屏幕并进入GPU。我希望能够在不必重新绘制CPU上的所有这50 000个注释的情况下进行缩放,因为这需要大约1秒钟,这对于图像缩放来说太长了。

我的问题:是否有一种方法可以缩放这些注释和图像,而无需重新绘制所有这些组件并循环显示所有这些组件。我的缩放最大需要50毫秒,这就是为什么我期待将这些更改直接发送到GPU上,而不是回到CPU上,应用更改并将它们重新绘制到屏幕上...

1 个答案:

答案 0 :(得分:0)

您可以使用rendertarget | shaderresourceview并绘制它。如果是这样,您可以轻松地将其用作平面的纹理。这将产生一个大的drawcall然后你可以像你想要的那样放大而不会影响性能。一个很好的优化是使用两个rendertargets进行绘制和呈现,然后在当前交换它们......这样你就可以与它们进行异步操作而不会发生访问冲突。