마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

openGL을 사용하는 중에...텍스쳐 부분에서...텍스쳐 지우기는 어떻게 하죠?

0 추천

질문이 좀 애매 할수도 있겠군요.

제가 처음 프로그램을 접할때 생성하면 없애라 원칙을 제일 먼저 배웠거든요.

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의 램에 올라간 텍스쳐는 어떻게 날리냐 하는거거든요..
오버플로우 되면 자동으로 알아서? 이건 아닐거 같고..
분명 릴리즈 해주는 부분이 있을거 같은데 여러 기초 도서들을 찾아봐도 안보여서요..
 
혹시 아시는 분은 간단한 댓글 부탁드립니다.
제가 잡고 있는 개념 자체가 잘못된 것이라면 꼬집어 주셨으면 더욱 감사하겠습니다.
 
읽고 생각해 주셔서 감사합니다.
바람처럼살리라 (370 포인트) 님이 2013년 2월 27일 질문

1개의 답변

0 추천
 
채택된 답변
gl.glDeleteTextures( 1, textures, 0 );

해주시면 됩니다.
바야바 (3,840 포인트) 님이 2013년 2월 27일 답변
바람처럼살리라님이 2013년 2월 28일 채택됨
바야바님 댓글 감사드립니다. 텍스쳐 load 하고 delete해본 결과 텍스쳐가 찍히지 않는군요. GPU RAM에서 삭제된걸로 판단했습니다.
추가로 궁금한건..GPU의 최대 메모리, 가용, 사용 메모리등도 체크 가능한가요?
...