2012-05-04 15 views
5

Estoy escribiendo un juego para Android usando AndEngine GLES 2. Todo funcionaba correctamente, tenía una imagen de fondo, había sprites en movimiento e incluso algo de música, hasta hace poco probé algo nuevo (quería poder cambiar entre dos escenas diferentes) cuando la pantalla se ponía negra.AndEngine GLES 2 - pantalla negra, sin errores

Todavía podía ejecutar el juego y no se mostró ningún error. Se mostraron todas las entradas de registro que hice durante el juego, incluso la música se estaba reproduciendo, así que sabía que el juego se estaba ejecutando "correctamente", pero no pude ver ninguna imagen. Nada. Todo negro.

Así que pensé, cambiar todo de nuevo a antes de que apareciera este "error", haría el truco. Pero aún así la pantalla es negra.

Incluso intenté comentar todo pero la imagen de fondo - nada.

Ahora, si no es demasiado pedir, ¿podría alguien mirar este pequeño código y decirme qué pasa allí?

Estos son los variables de que utilizo:

private SmoothCamera camera; 
private BitmapTextureAtlas bitmapTextureAtlas; 
private Scene scene; 
private Sprite background; 

Los EngineOptions Nunca he cambiado, por lo que debe estar bien.

@Override 
public EngineOptions onCreateEngineOptions() { 
    float positionX = 80f; // horizontal (x) position of the camera 
    float positionY = 280f; // vertical (y) position of the camera 
    float velocityX = 200f; // velocity of the horizontal camera movement 
    float velocityY = 200f; // velocity of the vertical camera movement 
    float zoomFactor = 1f; // the camera's zoom Factor (standard := 1) 
    this.camera = new SmoothCamera(positionX, positionY, this.getWindowManager().getDefaultDisplay().getWidth(), this.getWindowManager().getDefaultDisplay().getHeight(), velocityX, velocityY, zoomFactor); 
    EngineOptions options = new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, new RatioResolutionPolicy(this.camera.getWidth(), this.camera.getHeight()), this.camera); 
    return options; 
} 

Aquí creo el TextureAtlas y cargar una imagen de fondo .

@Override 
protected void onCreateResources() { 
    // create the TextureAtlas 
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); 
    this.bitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 1024, 1600, TextureOptions.NEAREST); 

    // background 
    this.background = new Sprite(0, 0, BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(this.bitmapTextureAtlas, this, "background.png", 0, 0, 1, 1), this.getVertexBufferObjectManager()); 
    this.mEngine.getTextureManager().loadTexture(this.bitmapTextureAtlas); 
} 

Y, finalmente, el Escena se instancia y el fondo se apega.

@Override 
protected Scene onCreateScene() { 
    this.scene = new Scene(); 
    this.scene.attachChild(this.background);   
    return this.scene; 
} 

¿Por qué esta pequeña actividad no se mostraría? Lo olvidé: es una SimpleBaseGameActivity.

Bueno, como AndEngine GLES2 no se ejecuta en el emulador, tengo que usar mi teléfono (Samsung Galaxy GIO) y no puedo probar la aplicación en otra máquina.

¿Alguien se encontró con un problema similar? ¡Cualquier ayuda es muy apreciada y gracias por su tiempo!

  • Christoph
+0

OK, he creado una nuevo proyecto con solo esta Actividad arriba. No funcionó, y aún no hay mensajes de error. Ahora estoy completamente perdido ... – GameDroids

+2

El problema ya no existe ... No puedo decir que esté resuelto, ya que todavía no tengo idea de qué fue lo que salió mal, pero está funcionando de nuevo (bueno, solo el fondo pantalla, no el juego completo que tenía antes) Después de muchos años en ciencias de la computación, pensé "¿Has intentado apagarlo y encenderlo de nuevo?"siempre se puede evitar la solución, ¡mal!" Después de desinstalar y borrar cada rastro de mi aplicación de mi teléfono y reiniciar todo, de repente comenzó a funcionar de nuevo. Disculpa si perdí tu tiempo. ¡Espero que esta "cosa" nunca vuelva a suceder! respeta a christoph – GameDroids

Respuesta

1

Creo que el problema está aquí:

this.bitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 1024, 1600, TextureOptions.NEAREST); 

Las dimensiones del Atlas se supone que son potencias de 2.

+1

sí, desafortunadamente el atlas todavía debería tener un tamaño de la potencia de 2. Aunque GLES 2 supuestamente admite atlas de cualquier tamaño. Sin embargo, algunos dispositivos todavía tienen problemas. Solo usé 1024x1024 atlas (más grande no funcionaría en todos dispositivos), después de ese problema y nunca más ocurrió. – GameDroids

+1

También tenía una pantalla negra, en algunos dispositivos. La razón era un atlas de textura demasiado grande (4096 * 1024). Pero uno más pequeño (1024 * 2048) funciona bien. – Yar

Cuestiones relacionadas