2012-11-23 4 views
0

저는 안드로이드 애플리케이션에서 텍스처를로드하고 쉐이더에서 텍스처를 전달하는 방법에 대한 자습서를 온라인에서 읽고 있습니다. 이 방법을 찾았습니다컨텍스트 클래스를 사용하는 방법 android

public static int loadTexture(final Context context, final int resourceId) 
{ 
    final int[] textureHandle = new int[1]; 

    GLES20.glGenTextures(1, textureHandle, 0); 

    if (textureHandle[0] != 0) 
    { 
     final BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inScaled = false; // No pre-scaling 

     // Read in the resource 
     final Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId, options); 

     // Bind to the texture in OpenGL 
     GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]); 

     // Set filtering 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); 
     GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); 

     // Load the bitmap into the bound texture. 
     GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 

     // Recycle the bitmap, since its data has been loaded into OpenGL. 
     bitmap.recycle(); 
    } 

    if (textureHandle[0] == 0) 
    { 
     throw new RuntimeException("Error loading texture."); 
    } 

    return textureHandle[0]; 
} 

어떻게 사용합니까? 이 메서드를 호출 할 때 매개 변수로 무엇을 넣을 까? 반환하는 정수는 무엇입니까? OpenGL에 대한 내 지식에서 반환하는 int는 많은 텍스처를로드 할 경우 텍스처의 "숫자"라고 가정합니다. 텍스처 핸들을 사용하면됩니다. 그러나 나머지는 어떨까요 ???

+0

질문에 더 나은 제목을주십시오. 이것은 너무 일반적입니다. – Snicolas

+0

존경한다면, 당신이 Context를 이해하지 못하고 resourceID가 어떻게 사용되는지 알지 못한다면, 진행하기 전에 안드로이드 기본 사항에 대해 더 배워야합니다. – Simon

답변

0

Android 및 CONTEXT 다양한 Android API를 살펴보면 많은 Android API가 android.content.Context 객체를 매개 변수로 사용한다는 것을 알 수 있습니다. 또한 활동 또는 서비스가 일반적으로 컨텍스트로 사용됨을 볼 수 있습니다. 이는 두 클래스가 모두 Context에서 확장되기 때문에 가능합니다.

컨텍스트 란 무엇입니까? 안드로이드 참조 문서에 따르면, 다양한 환경 데이터를 나타내는 엔티티입니다. 로컬 파일, 데이터베이스, 환경과 연관된 클래스 로더, 시스템 레벨 서비스를 포함한 서비스 등에 대한 액세스를 제공합니다. 이 책 전체와 Android로 일상적으로 코딩 할 때 Context가 자주 전달되는 것을 보게 될 것입니다. From : "Android in Practice"책.

그래서 위의 방법은 당신이 작업하고자하는 정지 리소스 파일 1 매개 변수

에서 resourceID getApplicationContext() 중 하나 getContext(), getBaseContext() 또는 this 인으로 mainactivity 클래스 내에서 나타내는 호출해야합니다. 내 경우에는 내가 고해상도/당김 폴더 안에 BMP 이미지를했고 이것은

R.res.myimagename.bmp 

를 작성하여 가지고 할 수 있으며,이 간단한 코드는 사실에서 resourceID에 있도록 리소스 파일의 위치를 ​​수있는 간단한 정수를 반환합니다. 다른 말로하면 리소스 파일에 대한 상대 경로와 다소 비슷합니다.

관련 문제