Ich versuche glReadPixels()
mit EGL Dinge zu ersetzen, um es schneller zu machen.Nur eine bestimmte Anzeige Breite funktioniert, wenn GraphicBuffer (EGL) in Android NDK verwendet
Verweise auf this post, ich habe es erfolgreich in meinem Projekt funktioniert. Der Code von mir ist fast der gleiche mit diesem Post.
aber das Merkwürdige ist, - die Breite müssen einige spezifische Pixel sein, beispielsweise 384, 640, 720 , 1280 usw. Wenn die Breite ich nicht unter diesen gesetzt, wird das Bild tatsächlich erbrachten in einige andere Breite unter diesen, so würde verzerrt werden, wenn Anzeige mit cv :: Mat, etc.
Es sieht aus wie Android-System machen einige Einschränkungen der Breite von EGLImage. Leider bin ich nicht vertraut mit Android-Entwicklung ...
Wie das passiert? Wie man es repariert?
Vielen Dank im Voraus.
Danke! Du hast recht. Es gibt ein 'getStride() 'in GraphicBuffer, das die tatsächliche Breite des Rendering-Puffers angibt. Überspringen Sie einfach die Polsterung am Ende jeder Reihe, dann funktioniert alles gut –