<div>안녕하세요? 주말내내 고민고민 해보다가 혼자서는 답이 안 나오는것 같아, 조언을 구하고자 글 올립니다.</div> <div><br></div>현재 개발하고 있는 안드로이드 앱이 있습니다. <div>Bamboo paper라던가 Inkredible 같이 터치를 하는데로 선을 그리기도 하고, 도형 도구를 선택해서 원, 사각형, 세모 등을 그리기도 합니다.</div> <div>이미지를 추가해서 이미지도 화면에 뿌려지게끔 하고 이미지에 대한 확대/축소 기능도 있습니다. 전체화면 확대/축소도 있고요.</div> <div><br></div> <div>현재까지는 일정 크기의 비트맵을 생성&유지하고 Canvas를 통해 그 비트맵에 모든 그래픽들을 그리고, surfaceview에 뿌리는 방식을 사용하고 있습니다.</div> <div>처음부터도 그려지는 속도가 그리 빠르지는 않았는데, 제가 할 수 있는 최적화를 조금 해봐도 속도가 개선되어 보이지 않아서 아예 그리는 방식을 바꿔보려고 합니다.</div> <div><br></div> <div>저도 겪어보기도 하고, 인터넷 검색에서도 종종 나오듯이 Canvas를 통한 그리기로는 답이 안 나오는것 같아서 다른 방법을 생각해봤습니다.</div> <div><br></div> <div>1) jni를 통해 skia 라이브러리를 이용해서 그리기를 시도.</div> <div>장점 : canvas가 이미 의존하고 있는 라이브러리라 Canvas와 bitmap하고 결합이 비교적 쉬움</div> <div>단점 : 제가 알아본 바로는 ndk support library의 jnigraphics에는 bitmap access외에는 지원을 안하는걸로 봤었고, 제가 skia를 포팅해야 되더라고요.</div> <div><br></div> <div><br></div> <div>2) opencv (opencv for android 아니고요 ㅎ) 를 포팅해서 opencv를 이용해서 그리기를 시도</div> <div>장점 : jni 레벨에서 그리기를 시도하므로 훨씬 빠를것임?, opencv는 예전에도 다뤄봤습니다.</div> <div>단점 : opencv 포팅;;</div> <div><br></div> <div>3) GLSurfaceView + opengl es 를 이용해서 그리기를 시도.</div> <div>장점 : gpu가속을 사용한 빠른 그리기 (canvas에서도 가속은 사용하고 있었지만 충분한 속도는 나오지는 않기에.)<br>단점 : opengl es로 그리는 방법을 배워야 하는 것 같네요.</div> <div><br></div> <div>2 아니면 3 을 선택하게 될것 같은데, opencv를 사용하는게 전체 로직을 덜 바꿀것 같긴 한데, 과연 속도에 있어서 만족을 할지 걱정입니다.</div> <div><br></div> <div>opencv를 사용해서 그리는 로직만 바꿔도 충분한 속도 개선이 이루어질까요?? jni 레벨에서 그래픽 작업을 하는게 자바레벨에서 canvas 사용보다는 빠르다는건 알고 있지만 과연 부드럽게 그리기가 가능할지..</div> <div><br></div> <div>질문 요약 :</div> <div>opencv 사용만 해도 만족할만한 (플레이스토어에 올라가도 문제 없을듯한;;) 그리기 성능을 향상 시킬수 있나요?</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.