2012-10-08 7 views
0

OpenGL ES의 새로운 기능입니다. 내 이해를 위해 OpenGL ES는 텍스쳐를위한 두 개의 크기 이미지 (예 : 512 * 512 또는 256 * 256 등)의 전력만을 허용합니다. 텍스처와 크기가 다른 이미지를 표시하는 방법을 찾고 있지만 크기가 2이고 크기가 다양합니다.Android Open GL ES 비 POT 텍스처

사진이 인터넷에서 다운로드됩니다. 다운로드하기 전에 크기를 조정하는 것은 문제가되지 않습니다.

텍스처에 POT가 아닌 이미지를 사용하는 방법이 있습니까? 크기를 조정하는 방법을 만들어야합니까? 저기 어딘가에 도서관이 있나요?

텍스처는 라이브러리 min3d를 사용하여 사각형에 적용됩니다. http://code.google.com/p/min3d/ 톡!

편집 : 자원의 텍스처로드

예 : 이미지에서로드 할 때

InputStream is =getResources().openRawResource(R.drawble.drawable1); 

Bitmap bitmap; 

bitmap = BitmapFactory.decodeStream(is); 
+0

는 OpenGL ES 2.0 텍스처 크기 등의 제한이 없습니다 :

컨테이너 비트 맵을 만들 수 있습니다. 대신 가능하다면 그걸로 전환하십시오. – harism

답변

1

, 당신은 POT 크기이며 그것을위한 더 큰 비트 맵 컨테이너를 만들 수 있습니다. 그런 다음 비 POT 이미지를 복사합니다. 새 비트 맵을 텍스처로로드 할 때 원하는 크기로자를 수 있습니다 (glTexParameteriv()의 세 번째 매개 변수).

// work out the pot size you need from the source Bitmap's size 
// ... 

Bitmap bigger = Bitmap.createBitmap(potWidth, potHeight, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(bigger); 
canvas.drawBitmap(nonPOTBmp, 0, 0, null); 

// free up memory 
nonPOTBmp.recycle(); 
+0

자세히 설명해 주시겠습니까? 첫 번째 비트 맵을 어떻게 만들 수 있습니까? 특정 크기의 비트 맵은 어떻게 만듭니 까? 비트 맵을 압축하는 방법 만 알고 있지만 크기를 제어 할 수는 없습니다. 또한 당신이 말하는 방법은 열려있는 GL이 없으며 glTexParameterf 또는 glTexParameterx 만 있습니다. Thanks – vallllll

+0

제 2의 비트 맵을 만들기위한 제 편집을보십시오. – nmw

관련 문제