질문이 좀 애매 할수도 있겠군요.
제가 처음 프로그램을 접할때 생성하면 없애라 원칙을 제일 먼저 배웠거든요.
C언어 시절.. new-delete, alloc-free 처럼 오래되서 기억이 가물가물 하군요...여하튼.. 본론으로 들어가면...
openGL에서 앞의 GLSurfaceView니 Renderer니 하는 부분은 생략하고. 사각형을 하나 그리고 그위에 텍스쳐를 입혔습니다.
텍스쳐 입히는 부분만 발췌해 볼게요.
gl.glGenTextures(1, textureIds, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
....
gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
bitmap.recycle();
대략 이정도가 되겠죠?
제가 알기론. GLUtils...(소스상의 3번째줄)에서 인자값의 bitmap(안드로이드상의 메모리에 있겠죠?힙이고 나발이고는 일단 집어치우고 가죠.)을 GPU의 메모리로 올린다.정도로 해석하고 있었습니다..
그래서 소스상의 마지막줄에 리사이클 해주죠. GPU의 램에 이미 텍스쳐(bitmap)의 정보가 올라가있으니까 안드로이드상의 메모리에서는 더이상 쓸모가 없죠.
근데. 궁금한건..그러면 GPU의 램에 올라간 텍스쳐는 어떻게 날리냐 하는거거든요..
오버플로우 되면 자동으로 알아서? 이건 아닐거 같고..
분명 릴리즈 해주는 부분이 있을거 같은데 여러 기초 도서들을 찾아봐도 안보여서요..
혹시 아시는 분은 간단한 댓글 부탁드립니다.
제가 잡고 있는 개념 자체가 잘못된 것이라면 꼬집어 주셨으면 더욱 감사하겠습니다.
읽고 생각해 주셔서 감사합니다.