studio programacion herramientas fundamentos con avanzado aplicaciones android opengl-es 2d

programacion - manual de android en pdf



Android OpenGL ES y 2D (6)

Definitivamente retiraría Android - Chris Pruett Google IO lecture Escribir juegos en tiempo real para Android redux

agarrar el PDF también

es realmente útil en muchos niveles, Chris tiene una gran experiencia en la creación de juegos para dispositivos móviles

pero si realmente te centras en 2D, comienza con Canvas http://developer.android.com/guide/topics/graphics/index.html#drawing-with-canvas canvas

Otra opción depende del nivel de habilidad es Flash + AdobeAIR para Android, me gusta y me gusta el nivel de programación y, a medida que avanzas en el desarrollo, descubrirás por qué.

OpenGL: buscar - Nehe Productions

un par de aplicaciones que puede querer poner en su teléfono que lo valen y que sean gratuitas es: Demo OpenGL, Min3d Framework, RedBook Sample

Bueno, aquí está mi pedido. Ya no conozco OpenGL, y no estoy dispuesto a aprenderlo, quiero aprender OpenGL ES directamente, ya que estoy enfocando mi desarrollo en Android, sin embargo. Quiero aprender OpenGL ES para desarrollar mis juegos 2D . Lo elegí para fines de rendimiento (ya que el dibujo básico de SurfaceView no es tan eficiente cuando se trata de juegos RT). Mi pregunta es: ¿por dónde empezar? He pasado más de un mes navegando en Google y leyendo / probando algunos tutoriales / ejemplos que he encontrado en cualquier lugar, pero para ser honesto, no sirvió de mucho y esto se debe a dos razones:

  1. Casi todos los artículos / tutoriales con los que me he encontrado están relacionados con 3D (solo quiero aprender cómo hacer mi dibujo Sprites 2D)
  2. No hay una base para comenzar, ya que todos los artículos se enfocan en cosas específicas como: "Cómo dibujar un triángulo (con vértices)", "Cómo crear una Malla" ... etc.

También traté de leer algún código fuente (por ejemplo: réplica de la isla) pero los códigos son demasiado complicados y contienen muchas cosas que no son necesarias; Resultado: Me pierdo entre 100 archivos .java con nombres de clases raras y esas cosas.

Supongo que no hay un curso como el que estoy buscando, pero estaré muy contento si alguien me puede dar algunas pautas y algunos enlaces tal vez para saber lo que estoy haciendo (¡solo renderización Sprins 2D de OpenGL ES! )


Estaba en una situación similar.
La manera en que comencé con OpenGL con inicio fue ver 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). Deberías echarle un vistazo a SpriteMethodTest por el mismo autor de la isla réplica: http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest

Vea esta pregunta donde publiqué mi propio código: Usar OpenGL para reemplazar Canvas - Android

Después de configurar el lienzo, comience por llamar a algo como: gl.glClear (GL10.GL_COLOR_BUFFER_BIT);

Después de eso, estás listo para renderizar un sprite. Primero, deberás 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 la carga de sprites: http://tkcodesharing.blogspot.com/2008/05/working-with-textures-in-androids.html

Así es como lo hago, tengo una clase llamada 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; } }

Luego en mi método onDrawFrame () simplemente lo 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 ayudarlo a dibujar sprites 2D en un lienzo OpenGL. Me di 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/



La programación 2D es solo una programación 3D que está restringida a un plano. No tendrá más remedio que aprender 3D, pero cuando lo esté utilizando simplemente configure z = 0.

Hay un libro oficial sobre OpenGL ES. Eso podría darle la introducción que está buscando: http://www.amazon.com/OpenGL-ES-2-0-Programming-Guide/dp/0321502795/



Veo que ya se ha proporcionado mucha información buena. ¡Quería compartir un sitio que me ayudó a acelerar en OpenGLE rápido! Solo tomó unos meses y tenía un sistema de coordenadas personalizado basado en el sistema de coordenadas cartesianas. Pude renderizar el objeto 3D sin cámara usando técnicas de Realidad Aumentada.

Empecé con solo experiencia en programación, sin experiencia OpenGL. Usé el sitio de tutoriales de Ray Wenderlich. La información proporcionada allí es de primera clase y fácil de comprender. Él corta la mayoría de la información superflua y le proporciona lo que necesita saber para ser productivo rápidamente. Recomiendo este tutorial como punto de partida: http://www.raywenderlich.com/5223/beginning-opengl-es-2-0-with-glkit-part-1

El otro recurso que recomiendo es un libro de Erik M Buck, titulado Learning OpenGL ES para iOS.

Algunos lo criticaron diciendo que era demasiado simplista. Pero eso es exactamente lo que estaba buscando. Me ayudó a entender todos los conceptos básicos y me dio una idea de dónde debería ir después para aprender cosas más avanzadas. Pero como era de esperar, pude construir mi aplicación de realidad aumentada usando las técnicas simples que había aprendido del sitio de Ray y el libro de Erik. ¡Gracias a ambos por compartir!