首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于mipmapping的性能提升

基于mipmapping的性能提升
EN

Stack Overflow用户
提问于 2013-12-25 06:00:18
回答 1查看 764关注 0票数 0

为什么性能提高是由于mipmap?我在网上读到:“当我们有256 x 256纹理数据并想将它映射到4x4时,驱动程序只会将生成的4x4 mipmap级别复制到GPU内存中,而不是256 x 256数据。而采样将工作在GPU内存上复制的4x4数据,这将节省大量的计算”我只想知道它是否正确?

另外,当glTeximage调用发生时,它会将纹理数据上传到gpu内存中,并在glteximage调用中传递。然后,它与上述声明相冲突。当我们调用glgeneratemipmap()时,它是否在CPU端创建所有mipmap级别,然后在GPU端复制所有这些级别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-25 09:49:38

Mipmapping提高性能有两个主要原因。第一个原因是它减少了GPU内存和纹理单元之间的带宽,第二个原因是它改善了纹理单元内的缓存。

想象一下,您有一个遥远的对象,其纹理应用于它。通过映射GPU而不是处理、读取和缓存一个巨大的纹理(级别0),它会读取一个更小的纹理。在这种情况下,带宽的减少是非常明显的。

带宽和缓存在mipmaping上并驾齐驱。采样距离对象的纹理最有可能是以稀疏的方式读取纹理。例如,读取texel,y和下一个片段读取x+10,y+10。x+10,y+10可能位于另一个缓存行中。但是,当从较小的纹理读取时,缓存丢失的情况可能要少得多。

glTexImageXX创建一个级别并将像素数据上传到GPU。当调用glGenerateMipmap时,驱动程序将为附加级别分配GPU内存,并且很可能会执行单个或多个GPU作业来填充这些级别。在某些情况下,我在CPU上做同样的事情,然后将数据上传到GPU。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20769543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档