2014-04-23 2 views
0

OpenGLES를 처음 접하면서 간단한 비트 맵을로드하려고합니다. 튜토리얼에서이 점을 발견했지만 onSurfaceCreated() 및 onDrawFrame()에서 무엇을 씁니다.OpenGL 렌더러에 간단한 이미지 (드로어 블 디렉토리의 비트 맵)를로드하십시오.

private void initImage(GL10 gl) { 
     int[] textures = new int[1]; 
     gl.glGenTextures(1, textures, 0); 
     gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); 
     gl.glTexParameterf(
      GL10.GL_TEXTURE_2D, 
      GL10.GL_TEXTURE_MIN_FILTER, 
      GL10.GL_NEAREST); 
     gl.glTexParameterf(
      GL10.GL_TEXTURE_2D, 
      GL10.GL_TEXTURE_MAG_FILTER, 
      GL10.GL_LINEAR); 
     gl.glTexParameterf(
      GL10.GL_TEXTURE_2D, 
      GL10.GL_TEXTURE_WRAP_S, 
      GL10.GL_CLAMP_TO_EDGE); 
     gl.glTexParameterf(
      GL10.GL_TEXTURE_2D, 
      GL10.GL_TEXTURE_WRAP_T, 
      GL10.GL_CLAMP_TO_EDGE); 
     gl.glTexEnvf(
      GL10.GL_TEXTURE_ENV, 
      GL10.GL_TEXTURE_ENV_MODE, 
      GL10.GL_REPLACE); 
     InputStream in = context.getResources().openRawResource(R.drawable.ic_launcher); 
     Bitmap image; 
     try { image = BitmapFactory.decodeStream(in); } 
     finally { 
      try { in.close(); } catch(IOException e) { } 
     } 
     GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, image, 0); 
     image.recycle(); 
    } 

답변

1

나는 과거에이 목적을 위해 BitmapFactory에서 decodeResource 방법을 사용했다. 이름을 지정하면 다음과 같이 표시됩니다.

Bitmap image = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher); 

위의 내용이 더 간단 할 것 같습니다.

onSurfaceCreated()에 넣어야합니다. onDrawFrame()에 다시 바인딩 할 수 있도록 클래스 멤버에 텍스처 ID를 저장하려고 할 수 있습니다. 하나의 텍스처 만 사용하는 경우 엄격하게 필요하지는 않습니다. 그럴 경우 텍스처를 바인딩 할 수 있기 때문입니다. 그러나 그것은 더 깨끗합니다. 그리고 미래에 여러 텍스처를 사용한다면 확장 될 것입니다.

관련 문제