Estaba en una situación similar.
La forma en que comencé con OpenGL con el inicio mirando las muestras/demostraciones de GLSurfaceView muy básicas.
Comience, configurando la actividad de su aplicación y configurando el lienzo básico.
Tome un botín en el archivo de código fuente de la isla réplica: GameRenderer.java para saber cómo configurar su lienzo con los indicadores GL adecuados para renderizado 2D (sprite). realmente debería echar un vistazo a SpriteMethodTest por el mismo autor de la isla de réplica: http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest
Ver esta pregunta dónde he publicado mi propio código: Using OpenGL to replace Canvas - Android
Después de haber configurado el lienzo, se empieza por llamar a algo como: gl.glClear (GL10.GL_COLOR_BUFFER_BIT);
Después de eso, ya está listo para renderizar un sprite. En primer lugar, tendrá que cargar el sprite en una textura: http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html
Sin embargo, este es el tutorial que realmente me ayudó con los sprites de carga: http://tkcodesharing.blogspot.com/2008/05/working-with-textures-in-androids.html
así es como lo hago, tengo una clase llamada Texture.java: método
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;
}
}
Luego, en mi onDrawFrame() yo simplemente hago:
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);
Eso debería ayudarte a dibujar sprites 2D en un lienzo OpenGL. Me he dado cuenta de que realmente no hay un tutorial sencillo sobre esto. Espero que en el futuro publique uno en mi blog de desarrollo: http://developingthedream.blogspot.com/
'y no estoy dispuesto a aprenderlo' No es una buena manera de comenzar una pregunta aquí – Falmarri
Lea toda mi pregunta, tomó una parte sensible y dejó la conclusión más importante:" No lo hago " Ya conozco OpenGL, y no estoy dispuesto a aprenderlo, quiero aprender OpenGL ES directamente ya que estoy orientando mi desarrollo a Android " ¿De qué sirve aprender OpenGL si voy a trabajar solo con OpenGL? ES en dispositivos integrados? Cheers – CoolStraw
Dado que OpenGL ES es en su mayoría un subconjunto de OpenGL, no veo el sentido de decir que no va a aprender OpenGL, ya que, por definición, tendrá que hacerlo. –