gpt4 book ai didi

opengl - 平滑渲染 1.2 GB 的纹理,1 GB 的 GPU 如何做到这一点?

转载 作者:行者123 更新时间:2023-12-01 11:04:32 27 4
gpt4 key购买 nike

我的目标是看看当使用比物理 GPU 内存所能容纳的更多纹理数据时会发生什么。我的第一次尝试是加载多达 40 个 DDS 纹理,导致内存占用比 GPU 内存高得多。但是,我的场景在 9500 GT 上仍会以 200+ fps 的速度渲染。

我的结论:GPU/OpenGL 很聪明,只在内存中保留 mipmap 的某些部分。我认为这在标准配置上是不可能的,但无论如何。

第二次尝试:禁用 mip 映射,这样 GPU 将始终必须从高分辨率纹理中采样。我再次在内存中加载了大约 40 个 DDS 纹理。我使用 gDEBugger 验证了纹理内存使用情况:1.2 GB。尽管如此,我的场景仍以 200+ fps 的速度渲染。

我唯一注意到的是,当将相机移开视线然后再次将其置于场景中心时,会出现严重的延迟。好像只有这样它才会将纹理从主内存传输到 GPU。 (我启用了一些基本的视锥体剔除)

我的问题:发生了什么事?这个 1 GB 的 GPU 如何以 200+ fps 的速度从 1.2 GB 的纹理数据中采样?

最佳答案

OpenGL 可以在绘制调用之间(不仅仅是在帧之间)将完整的纹理分页进出纹理内存。只有当前绘制调用所需的那些实际上需要驻留在图形内存中,其他的可以驻留在系统 RAM 中。它可能只对非常小的纹理数据子集执行此操作。它与任何缓存几乎相同 - 当您的 CPU 上只有 MB 的缓存时,您如何在 GB 的数据上运行算法?

此外,PCI-E 总线具有非常高的吞吐量,因此您不会真正注意到驱动程序进行分页。

如果您想验证这一点,glAreTexturesResident 可能有用也可能无用,这取决于驱动程序的实现情况。

关于opengl - 平滑渲染 1.2 GB 的纹理,1 GB 的 GPU 如何做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7307884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com