カメラ出力フレームをキャプチャし、GPU パイプラインでさらに処理しようとしています。このため、フレームを GPU テクスチャとして戻すことが最良のオプションです。runメソッドによって受信されたQVideoFilterRunnableクラスから継承した後、QVideoFrameオブジェクトはQAbstractVideoBuffer::GLTextureHandleと等しくない型を持ちます。と同じで、手動でテクスチャのマップ/マップ解除とロードを行う必要がありますが、これはパフォーマンスが良くありません。テクスチャ名を返すために使用できるコントロール オプションはありますか?NoHandle
glTexImage
いくつかのメモ:
Androidで良さそうです。返されたフレームはテクスチャなので、これは魅力のように機能します:
QVideoFrame* input = ...; GLuint texture = input->handle().toUInt(); f->glBindTexture(GL_TEXTURE_2D, texture);
一般に、iOS テクスチャ キャッシュ機能がある可能性があります。
CVPixelBufferRef pixelBuffer = ...; CVOpenGLESTextureCacheCreateTextureFromImage(..., pixelBuffer, ..., &textureRef); texture = CVOpenGLESTextureGetName(textureRef);