나는 비슷한 상황에 처해 있었다.
내가 openGL을 시작한 방법은 매우 기본적인 GLSurfaceView 샘플 / 데모를 살펴 보는 것입니다.
먼저 앱 활동을 설정하고 기본 캔버스를 설정합니다.
복제 섬 소스 코드 파일 : GameRenderer.java에서 2D (스프라이트) 렌더링을위한 적절한 GL 플래그로 캔버스를 설정하는 방법을 알아보십시오. 복제 섬의 동일한 작성자가 만든 SpriteMethodTest를 실제로 살펴 봐야합니다. http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest
내 자신의 코드를 게시 한이 질문을 참조하십시오 .OpenGL을 사용하여 Canvas 대체-Android
캔버스를 설정 한 후 다음과 같이 호출하여 시작합니다. gl.glClear (GL10.GL_COLOR_BUFFER_BIT);
그 후에 스프라이트를 렌더링 할 준비가되었습니다. 먼저 스프라이트를 텍스처에로드해야합니다. http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html
그러나 이것은 스프라이트를로드하는 데 도움이되는 튜토리얼입니다.
http://tkcodesharing.blogspot.com/2008/05/working-with-textures-in-androids.html
이것이 내가하는 방법이며 Texture.java라는 클래스가 있습니다.
public class Texture
{
/*Begin public declarations*/
public float x = 0;
public float y = 0;
public float z = 0;
public float width = 0;
public float height = 0;
/*Begin Private Declarations*/
private GL10 gl;
public int[] texture; //holds the texture in integer form
private int texture_name;
private int[] mCropWorkspace;
private final BitmapFactory.Options sBitmapOptions;
/*Begin Methods*/
public Texture( GL10 gl_obj )
{
gl = gl_obj;
texture = new int[1];
mCropWorkspace = new int[4];
sBitmapOptions = new BitmapFactory.Options();
sBitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
//Log.d(TAG, "Initializing Texture Object");
}
public int get_texture_name( )
{
return texture_name;
}
/*Loads the resource to memory*/
public boolean Load( Bitmap bitmap ) //rename this to glLoad and don't have it as an initializer parameter
{
/*many thanks to sprite method test if this works*/
if ( gl == null )
{
Log.e(TAG, "Failed to load resource. Context/GL is NULL");
return false;
}
int error;
int textureName = -1;
gl.glGenTextures(1, texture, 0);
textureName = texture[0];
//Log.d(TAG, "Generated texture: " + textureName);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureName);
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);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
mCropWorkspace[0] = 0;
mCropWorkspace[1] = bitmap.getHeight();
mCropWorkspace[2] = bitmap.getWidth();
mCropWorkspace[3] = -bitmap.getHeight();
((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D,
GL11Ext.GL_TEXTURE_CROP_RECT_OES, mCropWorkspace, 0);
error = gl.glGetError();
if (error != GL10.GL_NO_ERROR)
{
Log.e(TAG, "GL Texture Load Error: " + error);
}
//Log.d(TAG, "Loaded texture: " + textureName);
return true;
}
}
그런 다음 내 onDrawFrame () 메서드에서 간단히 다음을 수행합니다.
Texture texture = ...
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture.texture[0]);
((GL11Ext) gl).glDrawTexfOES((float)(draw_x + 0.5), (float)(draw_y + 0.5), 0, tile_width, tile_height);
그러면 openGL 캔버스에 2D 스프라이트를 그릴 수 있습니다. 나는 이것에 대한 직접적인 튜토리얼이 실제로 없다는 것을 알았습니다. 바라건대 저는 제 개발 블로그에 하나를 게시 할 것입니다 : http://developingthedream.blogspot.com/
and I'm not willing to learn it
즉 여기에 질문을 시작하는 아주 좋은 방법이 아니다