GlTexas参数和glSsamer参数有什么不同

soat7uwm  于 2022-09-26  发布在  其他
关注(0)|答案(2)|浏览(156)

因为我不是Maven,所以请不要认为这个问题很愚蠢。我已经阅读了几个教程,其中使用gltex参数设置了纹理参数。我说的是GL_纹理_MIN_FILTER、GL_纹理_MAG_FILTER、GL_纹理_WRAP_R等。突然,我看到了一篇教程,它现在使用glSples参数来设置这些参数。

我看到glTexas参数和glSples参数之间有一些常见的参数,如(GL_纹理_MIN_FILTER、GL_纹理_MAG_FILTER、GL_纹理_WRAP_R、GL_纹理_MIN_LOD等),还有一些仅适用于gl纹理参数(GL_纹理_BASE_LEVEL、GL_纹理_SWIZLE_R等)。我完全理解那些不常见的参数,因为毕竟gltex参数作用于图像,而这些参数指定的是图像本身的属性。

但我不太明白为什么这两个GL调用之间有一些共同的参数。哪种应该在什么时候使用?在我看来,像(GL_纹理_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_R等)这样的采样参数应该只适用于采样器(GlSsamerParameter),而不适用于glTexas参数。

请帮我理解一下两者之间的区别。

sz81bmfz

sz81bmfz1#

glSamplerParameter相对较新。纹理的采样方式实际上是进行采样的事物的属性,而不是纹理本身的属性-不仅是语义术语,而且是在实际的、真实的硬件上。

除了希望按照它们在硬件上的实际功能来表示它们之外,将两个不相关的东西捆绑在一起可能会在性能方面付出代价。如果将采样方式设置为采样器的属性,则可以在同一着色器中以两种不同的方式对同一纹理进行采样。如果它是纹理的属性,那么您将不得不上载相同的纹理两次或编写多过程着色器。

因此,这两件事现在被分开了。

vq8itlhq

vq8itlhq2#

在此处查找reference about Sampler Objectshere from geeks3d

它是在版本3.3中添加到Core OpenGL中的(所以今天应该会被很好地适应)。

通常,它将采样、纹理和纹理数据分开。以前它既是纹理对象的任务(这是相当低的效率和问题)。现在,新的解决方案提供了很大的灵活性。

参数与纹理对象相同,但仅与采样有关:GL_TEXTURE_WRAP_S​, GL_TEXTURE_WRAP_T​, GL_TEXTURE_WRAP_R​, GL_TEXTURE_MIN_FILTER​, GL_TEXTURE_MAG_FILTER​, GL_TEXTURE_BORDER_COLOR​, GL_TEXTURE_MIN_LOD​, GL_TEXTURE_MAX_LOD​, GL_TEXTURE_LOD_BIAS​, GL_TEXTURE_COMPARE_MODE​, or GL_TEXTURE_COMPARE_FUNC​

相关问题