スウィズリングを必要としない方法で 2vuy 非平面データを GPU にプッシュする効率的な方法を知っている人はいますか?
h264 ビデオ ファイルから生の 2vuy データを取得し、OpenGL オブジェクトにマップするテクスチャに正常にロードしています。私のコードがかなりの時間を に費やしていることに気付きましたglgProcessPixelsWithProcessor
。私のglTexImage2D
呼び出しは次のようになります。
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_YCBCR_422_APPLE,
GL_UNSIGNED_SHORT_8_8_APPLE, data);
Apple はその OpenGL ガイドでGL_YCBCR_422_APPLE
、「許容できる」パフォーマンス (p103) を提供すると述べていますが、
注: データをスウィズルするだけでよい場合は、データがスウィズルを
glgProcessPixels
必要としない場合ほど速くはありませんが、かなり高速にスウィズルを実行します。ただし、非ネイティブ データ形式は一度に 1 バイトずつ変換されるため、避けるべきパフォーマンス コストが発生します。
CPUで何らかの内部フォーマット変換が行われていると思います。glgProcessPixels
ブロックメソッドも実行している別のスレッドで気付きました。
私のパスは最も効率的ですか?そうでない場合、何ですか?