본문 바로가기

나의 플랫폼/안드로이드

[ Android ] 타이틀 바 높이 확인 방법 Rect rect= new Rect(); ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE)). Window window= activity.getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rect); int statusBarHeight= rect.top; int contentViewTop= window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); int titleBarHeight= contentViewTop - statusBarHeight; 출처 : http://andmobidev.blogspot.com/2010/01/gettin.. 더보기
[ Android Opengl es ] 화면이 하얗게 보이는 현상. Nexus S 이상 때부터 Opengl을 사용할 때, 본래 Bitmap 이미지의 크기를 2의 배수로 지정해주지 않으면, 그 Object를 하얗게 뿌려버리더군요. 그래서 다음과 같은 함수를 만들어서 사용을 합니다. private int getMinPowerByTwo(int value) { int result = 2; do { result *= 2; } while(result < value); return result; } 위 함수는 계속 2씩 곱해 나가다가 value 값 보다 커졌을 경우, 그 값을 리턴 시켜주는 거지요. 즉, 500x168 이라는 이미지가 있을 경우에는 위 함수를 통하여 우선 512 x256의 크기로 Bitmap을 리사이징 하고 Texture에 저장을 시킨 후, Texture 크기를 50.. 더보기
[ Android Opengl es 2.0 ] LoadTexture 1.0에서는 Texture에 Bitmap 파일만 넣어주면, Android에서 알아서 바꿔주었었다. 아주 간편하게 Texture를 적용 시킬 수가 있었습니다. (안에서 어떻게 돌아가든 관계 없어..) 하지만, 2.0에서는 모든 것을 개발자에게 맡기게 되어있죠. 구글링을 해본 결과 , 안드로이드의 Bitmap 값은 ARGB로 32bit 픽셀로 되어 있다고 합니다. 하지만, Opengl은 RGBA로 되어 있어서 컨버팅 할 필요가 생긴거죠. 그래서 2.0에서는 glTexture2D 의 매개변수가 Buffer로 되어 있는 겁니다. 결과적으로 Texture에 Bitmap을 로드 시킬 때 다음과 같은 코드 형식으로 하면 되겠네요. private static int loadTexture(InputStream is) {.. 더보기
[ Android Opengl es 2.0 ] glDrawArrays 와 glDrawElements 사용법 여러 소스를 보다 보면, glDrawArrays를 사용하거나, glDrawElements를 사용하기도 합니다. 그래서, 저 같은 경우는 이해하기 쉬운 glDrawArrays를 많이 사용했는데요. // Vertex 배열을 만듬. private final float[] mVerticesData = { 0.0f, 0.0f, 0.0f, -0.5f, 0.5f, 0.0f, 0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.0f.. 더보기
[Android Opengl es 2.0 ] VBO(VertexArray Buffer Object ) 관련해서 이번에 이해하게된 함수는 glGenBuffers, glBindBuffer,glBufferData 이 세 함수입니다. 이 함수에는 다음과 같은 코드로 Vertex 배열을 Opengl Buffer에 저장을 시켜서 Handle Number를 이용하여 사용을 하는데요. // Buffer 생성 공간을 2군데 만든다. GLES20.glGenBuffers(2, vObjId); // Buffer 공간에서 첫번째와 연결 GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, vObjId.get(0)); // 연결된 첫번째 공간에 Static형태로 Vertex데이터를 저장 한다. GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, mVerticesData.length * .. 더보기
[ Android Opengl es 2.0 ] Vertex배열을 이용하여 간단한 도형 만들기 안녕하세요. 이번엔 Vertex배열을 이용하여 제가 그린 그림을 보여드릴려고 합니다. private final float[] mVerticesData = { 0.0f, 0.0f, 0.0f, -0.5f, 0.5f, 0.0f, 0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.. 더보기
[ Android Opengl es 2.0 ] 기본적인 흐름도. Opengl es 2.0 에 대해 , 우선 제가 공부를 하면서 어느 정도 이해한 부분을 적어보고자 합니다. 정석의 내용이 아니라 제가 생각되는 점으로 적었다는 것을 먼저 알리고 싶습니다. 틀린 점이 있으면 주제 말고 적어주셨으면 합니다. 먼저, Opengl es 2.0을 사용하기 위해서는 가장 크게 3가지로 구분이 되는 것 같더군요. Program : Opengl es 2.0 에서 가장 큰 단위 입니다. 밑에 나오는 VertexShader와 FrameShader가 합쳐져서 위 Program이 되는 거죠. VertexShader : 물체의 모양이나 크기, 위치등 Vertex 배열을 이용해서 작성해주는 Shader입니다. FrameShader : 물체의 색깔, 질감등에 대해 설정을 해주는 Shader입니다... 더보기
[ Android Opengl es ] Blur효과 아직 실험해보지는 않았다. 이것도 역시 Bitmap의 컬러값을 이용하여,변경하는 함수이다. function BlurHorizontal (source, dest, radius) { for (y = 0; y < height; ++y) { for (x = 0; x < width; ++x) { total = 0 for (kx = -radius; kx 더보기