在渲染时设置glTexParameteri()是不是很糟糕?

时间:2012-07-30 12:58:31

标签: opengl opengl-es

我正面临着纹理包装的问题。这导致了文物。由于我的代码库变得越来越大,我能想到的唯一方法是执行某些检查以查看某些纹理是否属于导致工件的类别,并在绘制到渲染缓冲区之前更改参数。

一般来说还可以吗?设置像

这样的参数
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);

在渲染循环期间的glBindTexture之后?或者它会影响FPS,因为它会增加每个渲染帧期间的操作?

2 个答案:

答案 0 :(得分:9)

更改纹理参数通常不会对性能产生太严重的影响,因为它会保留完整的缓存并且只会更改访问模式。

然而,在OpenGL的更高版本中,针对这种非常具体的使用场景引入了“采样器对象”。我想你可能想看看它们。

答案 1 :(得分:3)

一般的经验法则是:不要改变任何你不需要的状态。

如果纹理具有使您使用镜像重复包装模式的内在属性,那么始终应具有该属性。因此,纹理应该最初使用该包装模式设置。

如果它是你需要在渲染时做的事情,那么是的,你可以做到。它是否会对您的性能产​​生负面影响,完全取决于CPU如何限制您的渲染代码。

注意:

  

由于我的代码库变得越来越大

这绝不是做任何事情的好理由。如果您无法找到一种方法来使您的代码以正确的方式执行此操作,那么您的代码库中可能会发生一些不好的事情。在尝试处理此纹理问题之前,您应该修复