2

OpenGL テクスチャにCore Video テクスチャ キャッシュを使用しています。縮小の場合、そのようなテクスチャのレンダリングに問題があります。パラメータ GL_TEXTURE_MIN_FILTER は効果がありません: 縮小のための補間は常に GL_TEXTURE_MAG_FILTER と同じです。興味深いことに、CVPixelBufferCreateWithBytes 関数を使用してピクセル バッファ オブジェクトを作成すると、すべてが正常に機能します。CVPixelBufferCreate を使用すると問題が発生します。

環境:

  • iOS7
  • OpenGL ES 2.0
  • iPadミニ、iPad3、iPad4。

この問題を示す簡単なアプリケーションを開発しました: https://github.com/Gubarev/iOS-CVTextureCache。デモ アプリケーションは、次の 3 つのモードでチェッカーボード (セルのサイズは 1x1) テクスチャをレンダリングできます。

  • 通常の OpenGL テクスチャ (OK)。
  • Core Video テクスチャ、CVPixelBufferCreate で作成されたピクセル バッファ (問題)。
  • Core Video テクスチャ、CVPixelBufferCreateWithBytes で作成されたピクセル バッファ (ok)。

テクスチャは、わずかに縮小して 2 回レンダリングされます (テクスチャよりも小さい OpenGL ビューポートを使用して達成されます)。

  • 縮小フィルター GL_NEAREST、拡大フィルター GL_NEAREST でレンダリングされた左の画像。
  • 縮小フィルター GL_LINEAR、拡大フィルター GL_NEAREST でレンダリングされた右の画像。

以下の画像は、通常の OpenGL テクスチャの場合の適切な縮小を示しています。縮小フィルターの設定が有効になっていることがはっきりとわかります。「CVPixelBufferCreateWithBytes」アプローチを使用すると、同じ結果が得られます。この問題は、「CVPixelBufferCreate」アプローチの場合に発生します。両方の画像は、拡大フィルター (特に GL_NEAREST) の設定で縮小されます。

ここに画像の説明を入力

4

0 に答える 0