2016-06-12 4 views
0

glReadPixels()をEGLに置き換えようとしています。AndroidでGraphicBuffer(EGL)を使用しているときに特定のディスプレイ幅のみが機能する

this postを参照して、私は正常に自分のプロジェクトで動作させるようにしました。私のコードは、その投稿とほぼ同じです。

しかし、奇妙なことは、 - 幅は特定のピクセルでなければなりません。たとえば、384,640,720、 1280などです。これらの中に設定しないと、画像は実際にレンダリングされますこれらの間の他の幅は、cv :: Matなどで表示すると歪んでしまうでしょう。

EGLImageの幅にはいくつかの制限があります。残念ながら私はAndroidの開発に精通していません...

これはどうしますか?それを修正するには?

ありがとうございます。

答えて

0

一般に、grallocで割り当てられるシステムグラフィックスバッファは移植性がありません。 gralloc割り当ては、ビデオ/グラフィックス/ディスプレイサブシステムによる効率的な使用のための最適なメモリレイアウトの使用など、多くのシステム仕様を処理するように設計されています。場合によっては、フレームバッファ圧縮のような非常に侵略的なエフェクトが発生することさえあります。

私が推測しなければならないのは、あなたのアプリケーションで画像を読み込むときに面の行のストライドを考慮していないように思えます。

+0

ありがとうございます!あなたが正しいです。 GraphicBufferには、描画バッファの実際の幅を示す 'getStride()'があります。各行の末尾にパディングをスキップするだけで、すべて正常に動作します –

関連する問題