NDK使用ANativeWindow渲染surface,
大緻代碼如下:
在測試的過程中,發現有些機型上出現花屏的現象,經記憶體拷貝測試,發現這些機型上,windowbuffer.bits的大小不等于 width * height * RGBSIZE,是以會導緻資料錯位而無法正常顯示。
翻了下native_window.h(development/ndk/platforms/android-x/include/android目錄下),對于windowBuffer的定義如下:
其中一個叫stride的項,表示在記憶體中每一行包含的像素數量,這個值可能會大于width。
再次測試,發現所有有問題的機型,果然stride大于width。是以在拷貝的時候需要注意記憶體對齊。。
最後解決方案如下: