2012-05-04 16 views
5

Sto scrivendo un gioco per Android utilizzando AndEngine GLES 2. Tutto funzionava correttamente - avevo un'immagine di sfondo, c'erano degli sprite che si muovevano e persino della musica - fino a poco tempo fa ho provato qualcosa di nuovo (volevo essere in grado di passare tra due scene diverse) quando il display diventava nero.AndEngine GLES 2 - schermata nera, senza errori

Potrei ancora eseguire il gioco e non sono stati visualizzati errori. Sono state mostrate tutte le voci di registro che ho creato durante il gioco, anche se la musica stava suonando, quindi sapevo che il gioco funzionava "correttamente", ma non riuscivo a vedere alcuna immagine. Niente. Tutto nero.

Quindi ho pensato, cambiando tutto prima che questo "errore" apparisse, avrebbe funzionato. Ma lo schermo è ancora nero.

Ho persino provato a commentare tutto ma l'immagine di sfondo - niente.

Ora se non c'è molto da chiedere, qualcuno potrebbe per favore guardare oltre questo breve pezzo di codice e dirmi cosa c'è che non va?

Questo sono le variabili io uso:

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

I EngineOptions ho mai cambiato, in modo che dovrebbe essere a posto.

@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; 
} 

Qui ho creare il TextureAtlas e caricare un'immagine di sfondo .

@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); 
} 

E infine il scena viene creata un'istanza e lo sfondo si attacca.

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

Ora perché questa piccola attività non viene visualizzata? Dimenticavo: è un SimpleBaseGameActivity.

Bene, dal momento che AndEngine GLES2 non è in esecuzione sull'emulatore, devo usare il mio telefono (Samsung Galaxy GIO) e non posso testare l'app su un'altra macchina.

Qualcuno si è imbattuto in un problema simile? Qualsiasi aiuto è davvero molto apprezzato e grazie per il tuo tempo!

  • Christoph
+0

OK, ho creato un nuovo progetto con solo questa attività sopra. Non ha funzionato - e ancora nessun messaggio di errore. Ora sono completamente perso ... – GameDroids

+2

Il problema è finito ora ... Non posso dire che sia risolto, dal momento che non ho ancora idea di cosa sia andato storto, ma sta funzionando di nuovo (beh, solo lo sfondo schermo, non il gioco completo che avevo prima) Dopo molti anni in informatica, ho pensato "Hai provato a spegnerlo e riaccenderlo?"La soluzione potrebbe sempre essere evitata - sbagliato! Dopo aver disinstallato e cancellato ogni traccia della mia app dal mio telefono e riavviato tutto, improvvisamente ha iniziato a funzionare di nuovo Scusa se ho perso tempo. Spero che questa" cosa "non accada mai più! riguarda christoph – GameDroids

risposta

1

Credo che il problema è qui:

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

Le dimensioni del Atlas dovrebbero essere potenze di 2.

+1

sì, sfortunatamente l'atlante dovrebbe ancora avere una dimensione della potenza di 2. Anche se GLES 2 suppone che supporti atlanti di qualsiasi dimensione.Tuttavia alcuni dispositivi hanno ancora problemi.Ho usato solo 1024x1024 atlanti (più grande non avrebbe funzionato su tutti dispositivi), dopo questo problema e non si è più verificato. – GameDroids

+1

Ho avuto uno schermo nero anche su alcuni dispositivi, il motivo era un atlante di texture troppo grande (4096 * 1024), ma uno più piccolo (1024 * 2048). funziona bene. – Yar

Problemi correlati