核心视频纹理缓存和缩小问题

时间:2013-11-08 08:46:49

标签: ios rendering opengl-es-2.0 core-video

我使用Core Video texture cache作为我的OpenGL纹理。在缩小的情况下,我有渲染这种纹理的问题。参数GL_TEXTURE_MIN_FILTER无效:缩小的插值始终与GL_TEXTURE_MAG_FILTER相同。有趣的是,当我使用CVPixelBufferCreateWithBytes函数创建像素缓冲区对象时,一切正常。当我使用CVPixelBufferCreate时会出现问题。

环境:

  • iOS 7
  • OpenGL ES 2.0
  • iPad mini,iPad 3,iPad 4。

我开发了一个简单的应用程序来演示这个问题:https://github.com/Gubarev/iOS-CVTextureCache。 Demo应用程序可以在三种模式下渲染棋盘格(单元格大小为1x1)纹理:

  • 常规OpenGL纹理(ok)。
  • 核心视频纹理,使用CVPixelBufferCreate(问题)创建的像素缓冲区。
  • 核心视频纹理,使用CVPixelBufferCreateWithBytes(ok)创建的像素缓冲区。

纹理渲染两次,轻微缩小(通过使用小于纹理的OpenGL视口实现):

  • 使用缩小滤镜GL_NEAREST,放大滤镜GL_NEAREST。
  • 渲染左图像
  • 使用缩小滤镜GL_LINEAR,放大滤镜GL_NEAREST。
  • 渲染的右图

下面的图片展示了常规OpenGL纹理的正确缩小。可以清楚地看到,微型过滤器的设置生效。当使用“CVPixelBufferCreateWithBytes”方法时,可以获得相同的结果。在“CVPixelBufferCreate”方法的情况下出现问题:两个图像都使用放大文件管理器(特别是GL_NEAREST)进行了缩小。

enter image description here

0 个答案:

没有答案