我有一个基于OpenGL的GUI。我使用超级分辨率来处理各种尺度。不是缩放图像,而是缩小图像(除非有人以4000x4000 +分辨率运行)。OpenGL超级分辨率问题
问题是,OpenGL看起来并没有顺利下滑。我有假象,就好像缩放是最近的邻居。 (例如,文本边缘块状,即使它们没有在原始)
这些是我使用的设置:
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
这里是伪影的样品,则缩放比为2:1 I相信。也许这不是确切的,但由于窗口边缘等。
你可以看到左侧边缘看上去很完美(它不是虽然),但右边缘有奇怪的休息。原始图形是完全对称的,没有文物。
我试过GL_NEAREST,GL_LINEAR。没有mipmapping所以...
当然,OpenGL是不是那么差缩放?我喜欢双立方缩放或其他能够产生良好效果的东西。
我正在使用OpenGL 1.1。我可能会预先缩放图像,但我必须在每次窗口大小发生变化时都这样做,并且在cpu中可能会很慢。
我在一些图片上也有锯齿边缘。超分辨率的全部点是为了避免这一切;/
有一些设置我失踪了吗?
超分辨率有点令人误解,因为你的问题涉及下采样。尽管如此,从最近线性变为线性,您应该在小比例缩放时看到差异,例如原始的1/1.2。 'GL_NEAREST'肯定是最近邻居插值。 – mainactual