Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么软件渲染在WPF中使用更多内存?_C#_Wpf - Fatal编程技术网

C# 为什么软件渲染在WPF中使用更多内存?

C# 为什么软件渲染在WPF中使用更多内存?,c#,wpf,C#,Wpf,我有一个应用程序,它使用WPF画布来显示非常高分辨率的图像。 我注意到,当同一个图像显示在我的本地计算机上时,没有问题,应用程序的内存在任务管理器上大约为5GB。 但是,当我使用远程桌面时,显示相同图像的同一应用程序在任务管理器中占用了大约8GB的空间 我读过关于WPF使用硬件加速(如果有的话)的文章,但在某些情况下会切换到软件渲染。其中一个案例正在远程桌面上进行。 现在我的问题是,虽然我知道CPU现在正在做远程桌面渲染的所有计算,但为什么硬件渲染和软件渲染之间存在如此巨大的差异? 任何帮助或

我有一个应用程序,它使用WPF画布来显示非常高分辨率的图像。 我注意到,当同一个图像显示在我的本地计算机上时,没有问题,应用程序的内存在任务管理器上大约为5GB。 但是,当我使用远程桌面时,显示相同图像的同一应用程序在任务管理器中占用了大约8GB的空间

我读过关于WPF使用硬件加速(如果有的话)的文章,但在某些情况下会切换到软件渲染。其中一个案例正在远程桌面上进行。

现在我的问题是,虽然我知道CPU现在正在做远程桌面渲染的所有计算,但为什么硬件渲染和软件渲染之间存在如此巨大的差异?
任何帮助或见解都将不胜感激。

在软件渲染期间,CPU和主内存负责所有渲染操作。 因此,所有临时缓冲区都保存在主内存中,渲染操作由CPU计算,这会导致性能下降和内存使用率增加

在硬件渲染期间,所有这些都将由GPU和视频内存处理

请注意,在某些情况下,硬件渲染可能比软件渲染慢。
请参阅问题中的链接。

我想你可能会发现这个主题对你很有用。我不是100%确定,但我认为问题可能在于,你的图像现在是用CPU而不是GPU解压到内存中的。。。顺便说一句:5GB桌面应用程序…感谢链接。我知道在远程桌面会话期间,WPF使用软件渲染,这会降低性能。我想知道为什么软件光栅化是如此内存密集。我可以理解它是性能密集型的,因为使用了CPU,但为什么内存密集型?@Kaushik,因为内存中有一个高分辨率的图像?所有这些中间缓冲区等,通常会存储在视频存储器中?3 GiB的差异仍然是可疑的,但5 GiB的桌面应用程序也是如此:D稍微分区数据可能是一个更好的解决方案,为什么您需要一次将数据全部存储在内存中?@Luaan是的,一个图像本身的大小约为1.4GB。它在视频内存中而不是在主内存中是有意义的。