在着色器代码中,为什么我们无法读取进程内存(例如RAM)中分配的变量?

问题描述 投票:0回答:1

据我所知,我们只能读取显存中的数据。

因此,当我们想要读取进程内存上的数据时,我们应该使用渲染目标或SSBO将数据复制到显存,以便着色器可以读取。

我认为这是性能和代码架构的相当损失。

我确信其中有一些原因,但我无法凭自己的力量找到它。

为什么会发生这些事情?

我应该学习什么才能弄清楚并理解全部内容?

我认为答案在于 GPU 的工作原理以及其设计目的是为了获得更好的性能。

但是我对这些部分没有足够的知识,所以需要一些帮助。

graphics gpu computer-science hardware
1个回答
0
投票

GPU 有自己的内存,这是为 GPU 的需要而设计的。 它需要具有高带宽和低延迟,以便GPU能够实现最大效率。 GPU 的需求比 CPU 的需求更多。

因此,任何 GPU 编程的目标之一就是将数据传输到 GPU 上,并让 GPU 在自己的内存中尽可能多地进行处理。 来回移动数据的成本很高。 将数据留在 GPU 上的成本很低。

© www.soinside.com 2019 - 2024. All rights reserved.