Tôi đã ở trong tình trạng tương tự.
Cách tôi bắt đầu với openGL bắt đầu bằng cách xem các mẫu / demo GLSurfaceView rất cơ bản.
Bắt đầu, bằng cách thiết lập hoạt động ứng dụng của bạn và thiết lập canvas cơ bản.
Tham gia chiến lợi phẩm tại tệp mã nguồn đảo sao: GameRenderer.java để biết cách thiết lập canvas của bạn với các cờ GL thích hợp cho kết xuất 2D (sprite). Bạn thực sự nên xem qua SpriteMethodTest của cùng một tác giả của đảo sao: http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest
Xem câu hỏi này nơi tôi đã đăng mã của riêng mình: Sử dụng OpenGL để thay thế Canvas - Android
Sau khi thiết lập canvas, bạn bắt đầu bằng cách gọi một cái gì đó như: gl.glClear (GL10.GL_COLOR_BUFFER_BIT);
Sau đó, bạn đã sẵn sàng để kết xuất một sprite. Trước tiên, bạn sẽ cần tải sprite vào một kết cấu: http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html
Tuy nhiên, đây là hướng dẫn thực sự giúp tôi tải sprites:
http://tkcodesharing.blogspot.com/2008/05/working-with-textures-in-androids.html
Đây là cách tôi thực hiện, tôi có một lớp tên là 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;
}
}
Sau đó, trong phương thức onDrawFrame () của tôi, tôi chỉ cần thực hiện:
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);
Điều đó sẽ giúp bạn vẽ các sprite 2D trên canvas openGL. Tôi nhận thấy rằng thực sự không có hướng dẫn đơn giản về điều này. Hy vọng rằng trong tương lai tôi sẽ đăng một bài lên blog nhà phát triển của mình: http://developingthedream.blogspot.com/
and I'm not willing to learn it
Đó không phải là một cách rất tốt để bắt đầu một câu hỏi ở đây