如果我们有支持NPOT纹理的mipmap,那么矩形纹理有什么用呢?是否有任何与性能或图像质量相关的改进?此外,我认为,mipmapping将占用大量内存,因为它为每个级别创建。那么,使用矩形纹理不是更好吗?
发布于 2013-01-03 17:51:09
矩形纹理:
#1并不重要,因为您可以通过仅使用glTexStorage2D和setting the number of mipmap levels to 1,或者通过setting the base/max level of the texture properly和/或不使用mipmap的min filtering parameters来实现相同的效果。
#2更难模仿。texelFetch函数在纹理空间中工作,但它使用整数纹理坐标。矩形纹理坐标是浮点值。这允许他们使用双线性甚至是各向异性过滤。你不能用texelFetch做到这一点。
可以通过规格化纹理空间纹理坐标来模拟矩形纹理。但这需要手动操作:您必须使用textureSize查询纹理的大小,或者将uniform中的大小传递给着色器。然后你必须做除法来归一化坐标。这可能是现代硬件在幕后所做的事情(特别是因为像Vulkan这样的较新的API没有它们),但是如果有对矩形纹理的显式支持,手动操作很可能会绕过它。
#2是现在你使用矩形纹理的主要原因。它们对于渲染目标非常有用,因为您可以使用窗口空间坐标从它们获取值,而无需标准化纹理坐标。但总的来说,它们是非常特殊的纹理类型。
性能问题纯粹是投机性的,也是特定于硬件的。
https://stackoverflow.com/questions/14135399
复制相似问题