我使用Core Video texture cache作为我的OpenGL纹理。在缩小的情况下,我有渲染这种纹理的问题。参数GL_TEXTURE_MIN_FILTER无效:缩小的插值始终与GL_TEXTURE_MAG_FILTER相同。有趣的是,当我使用CVPixelBufferCreateWithBytes函数创建像素缓冲区对象时,一切正常。当我使用CVPixelBufferCreate时会出现问题。
环境:
我开发了一个简单的应用程序来演示这个问题:https://github.com/Gubarev/iOS-CVTextureCache。 Demo应用程序可以在三种模式下渲染棋盘格(单元格大小为1x1)纹理:
纹理渲染两次,轻微缩小(通过使用小于纹理的OpenGL视口实现):
下面的图片展示了常规OpenGL纹理的正确缩小。可以清楚地看到,微型过滤器的设置生效。当使用“CVPixelBufferCreateWithBytes”方法时,可以获得相同的结果。在“CVPixelBufferCreate”方法的情况下出现问题:两个图像都使用放大文件管理器(特别是GL_NEAREST)进行了缩小。