6

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

那么一般情况下可以吗?设置参数,如

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);

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

4

2 回答 2

9

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

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

于 2012-07-30T13:02:17.173 回答
3

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

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

如果这是您在渲染时需要做的事情,那么是的,您可以做到。它是否会对您的性能产​​生不利影响完全取决于您的渲染代码对 CPU 的约束程度。

笔记:

由于我的代码库变得庞大

This is never a good reason to do anything. If you can't figure out a way to make your code do this the right way, then something bad has probably happened within your codebase. And you should fix that before trying to deal with this texture issue.

于 2012-07-30T14:31:52.747 回答