안드로이드 - NDK 화면 버퍼링
안드로이드 / 2017. 2. 18. 23:30
NDK에서 화면을 더블 버퍼링하려면?
How to Render Image Buffer in Android NDK Native Code
ANativeWindow* window = ANativeWindow_fromSurface(env, javaSurface);
ANativeWindow_Buffer buffer;
if (ANativeWindow_lock(window, &buffer, NULL) == 0) {
memcpy(buffer.bits, pixels, w * h * 2);
ANativeWindow_unlockAndPost(window);
}
ANativeWindow_release(window);
일반적으로 위의 방법을 사용한다.
그런데, 문제가 좀 있다.
본인이 확인한 화면은 2장이 아니라, 4장이었다.
4장을 내 마음대로 골라서, swap하질 못한다.
무조건 순차적으로 강제 버퍼링(swap)되어 진다.
2장만 있으면, swap할 수 있는데, 4장이니, 메모리 낭비가 발생한다.
또한 swap기능을 사용 하기위해서는
1) 화면 전체를 새로 그리던가,
2) 별도의 화면 메모리를 할당하여, 그리고, 필요한 부분만 업데이트 해주면 되나,
문제가 많다.
1), 2)번 모두 처리비용이 비싸다. 비효율적이라는 말이다.
왜 일반적인 sawp기능이 왜 없는지 의문스럽다.
'안드로이드' 카테고리의 다른 글
안드로이드-Minimum SDK API 선택 (0) | 2020.05.16 |
---|---|
2020.05 - 안드로이드 스튜디오 설치 (0) | 2020.05.16 |
안드로이드 APK파일 디버깅 데이터 제거방법 (0) | 2017.02.18 |
안드로이드 - NDK - ANativeWindow_Buffer (0) | 2017.02.18 |
안드로이드 - Looper (0) | 2017.02.18 |