본문 바로가기

openGL es 2.0

[ Android Opengl es 2.0 ] called uninplemented OpenGL ES API 에러 발생 위 에러는 에러가 아닙니다.^^ 현재 Opengl es 2.0을 사용하고 있는데 , 혹시 1.1이나 1.0 버전의 기능을 사용할려구 할 때 발생하는 표시로 예를 들어 Texture 로드 시 밑과 같은 소스를 사용하면 발생 합니다. gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE);*/ GL10.GL_MODULATE); 전혀 그리는데 문제가 되는 것도 없구요. 혹시 발생하더라도 걱정안하셔도 됩니다. ㅎ 그럼 오늘도 즐코딩~ ㅋ 더보기
[ Android Opengl es 2.0 ] 여러 Texture를 사용할 때 GLES20을 보면 Texture의 갯수를 30개 까지 설정을 할 수 있는 것 같이..(?) ㅋ 위치 변수가 있다. 하지만, 제가 경험해 본 일 중에.... 8개 이상의 Texture를 할당할 경우... // Texture 위치 mObjTexLoc = GLES20.glGetUniformLocation ( mProgramObject, "s_texture" ); // Object Texture 설정 GLES20.glActiveTexture ( GLES20.GL_TEXTURE0 ); GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, mObjTexId0 ); GLES20.glActiveTexture ( GLES20.GL_TEXTURE1 ); GLES20.glBindTexture (.. 더보기
[ Android Opengl es 2.0 ] 나머지 구하기!! Opengl es Native Code ( BufferShader 와 FrameShader에 적용 시킬 코드 ) 에서는 '%'인 나머지 연산자가 적용이 되지 않습니다.!!!! 왜!!!!! 'modulus operator' : not supported in this language version (100) 위와 같은 오류를 볼 수 가 있죠! 결국 우리의 구글 형님께 물어보니 ~ 바로 대답을 알려주시더군요.^^ 전제 : 두 수가 정수라는 가정 공식 : int a ,b ; int mod = a-(a/b)*b ; 예를 들어 a가 130 이고 b가 100일 경우 결과 값은 30이 나옵니다. ㅎㅎ 참고하세요^^ 더보기
[Android Opengl es 2.0 ] 여러 Object를 한 번에 그리기. 코딩을 하는 도중... 만약에 1000개 이상의 Object들을 한꺼번에 그릴 려고 할 때, For문으로 1000개를 돌려야 할까요???? 개발 요구사항에 따라 다르겠지만, 만약 전체적인 회전이나 컬러 알파 정도는 수정할 수 있는 방법이 있었습니다. 바로!!! 1000개의 Object의 Vertex를 지정하고, 한번에 그리는 것입니다.!!! ( 제가 초보라서.. 이제 알게됨..^^;) Vertex와 Index 배열을 잘 이용하면 쉽게 그릴 수 있습니다. 먼저 테스트 해본 배열은 private final float[] mVerticesData = { // X, Y, Z, U, V,alpha,colorR,colorG,colorB,colorA 0.0f, 0.5f, 0, 1.0f, 0.0f,1.0f,0.0f,0.. 더보기
[ Android Opengl es 2.0 ] java.lang.IllegalArgumentException Wallpaper를 개발하는 저는.. 항상 문제점이 미리보기 부분 이었습니다. 이번에 문제도 테스트 하다 갑자기 나온 Exception 때문에.. SI 업체이다 보니 해결 못하면 고객사에 보내기가 찝찝해서 이렇게 빈번도가 낮아도 해결을 할려고 발악(?)을 하지요^^;;; 위와 같은 Exception이 발견 되는 시점은 Opengl es 1.1을 사용한 Wallpaper은 발생 하지 않거나, 빈번도가 극히 희박합니다. 하지만, Opengl es 2.0에서는 5번의 1번은 발생을 하더라구요. 테스트 방법 : 미리보기를 선택한 후, 재빠르게 취소 버튼을 누르면 발생합니다. 결국 Wallpaper에 타격은 없지만, Exception이 발생해서 Error가 뜨면 어떻게든 잡아야겠죠?ㅎㅎ 그래서 try catch문.. 더보기
[Android Opengl es 2.0 ] Texture Setting. /// // Load texture from resource // private int loadTexture ( InputStream is ,int texId) { /* * Create our texture. This has to be done each time the * surface is created. */ int[] textures = new int[1]; if(texId == 0) GLES20.glGenTextures(1, textures, 0); else textures[0] = texId; int mTextureID = textures[0]; GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID); GLES20.glTexParameterf(GLES2.. 더보기
[ Android Opengl es 2.0 ] 화면 전체 이동 및 회전 Opengl es 2.0에서는 한 Object만 회전이나 이동을 시킬 시에는 Matrix의 곱을 이용한다. 하지만, 생각을 해보니 Object만 움직이는 게 아니라 화면 전체를 움직여야하는 상황이 발생할 수도 있다. 이럴 경우 Matrix 곱을 이용해서는 전체적으로 움직임을 나타낼수가 없다. Opengl es 1.1을 해본 사람일 경우~ 뭔가 느낌이 오는 것이 있을 것이다. 바로~~~ 카메라의 시점을 변화 시키는 것이다. Matrix.setLookAtM(mVMatrix, 0, 0, 0,-mHeight, 0f, 0f, 0f, 0f, 30.0f, 0.0f); Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 2f, xMaxOffset*2); 위 두 함수 에서 s.. 더보기
[ Android Opengl es 2.0 ] Blur 효과 드뎌!!!! Blur효과를 냈습니다. 아마 이런 것 가지고 하시는 분들 계시겠지만, 저한테는 너무 기분 좋은 일이네요.^^ 이 효과를 내고 싶어도... 낼 수가 없었던 지금까지의 고생이 오늘 해결 되었네요. Opengl es 2.0으로 했구요. FrameShader 소스 부분의 컬러 값을 변경하면 됩니다. String fShaderStr = "precision mediump float; \n" + "varying vec2 v_texCoord; \n" + // 이건 texture index 배열이죠. DrawElement에서 사용 "uniform sampler2D s_lightMap; \n" + // 이미지 텍스쳐 입니다. "uniform float u_blurAmount; \n" + // Blur을 먹이.. 더보기