Uso felicemente la classe SpriteBatch di LibGDX Framework. Il mio obiettivo è modificare la rappresentazione dello sprite attraverso uno shader.LibGDX SpriteBatch Multitexture possibile?
batch = new SpriteBatch(2, shaderProgram);
Ho copiato lo shader di default dalla Classe SpriteBatch e ha aggiunto un altro uniforme Sampler 2d
+ "uniform sampler2D u_Texture2;\n"//
C'è un modo che lavora per dare la consistenza allo shader. In questo modo, finisce sempre in una schermata ClearColor.
batch.begin();
texture2.bind(1);
shaderProgram.setUniformi("u_Texture2", 1);
batch.draw(spriteTexture,positions[0].x,positions[0].y);
batch.draw(spriteTexture,positions[1].x,positions[1].y);
batch.end();
Ogni trama da sola funziona. Disegnare manualmente con l'aiuto della classe mesh funziona come previsto. Quindi, cosa posso fare per usare la convenienza di SpriteBatch?
THX per la Guida
hey finalmente ho ricevuto una risposta, grazie! Hai ragione. È la causa del modo in cui la classe lega la trama. Devo dire che ho già creato la mia SpriteBatch Class personalizzata. SpriteBatch ha mostrato anche alcuni problemi nel rendering delle trame Framebuffer di dimensioni maggiori. E lego sempre TEXTURE0 prima. Ecco perché ho deciso di farlo a modo mio. Meno conveniente ma molto più flessibile. Ora ho uno Sprite Batch che gestisce solo la generazione dei vertici. Tutto intorno può essere personalizzato con i propri shader. – fky
Tieni presente che SpriteBatch fa un po 'di più che generare i vertici, se non stai attento, ti imbatterai in problemi di prestazioni. SpriteBatch stesso ha alcuni problemi di "usabilità", ma è una decisione di progettazione. Ha lo scopo di semplificare le operazioni di disegno più comuni e, in qualche modo, fa male la flessibilità. Ad ogni modo, sono stato in grado di risolvere la maggior parte dei problemi che ho incontrato fino ad ora (la maggior parte delle volte abilita/disabilita i flag opengl appropriati prima di usarlo). Forse stasera cercherò di implementare il multitexture come hai fatto tu e farti sapere;) –
sry per essere di nuovo in ritardo e grazie per il tuo supporto. Funziona come hai modificato. MA, non mi piace. Questo mi sembra pericoloso per me. Preferisco la mia versione specializzata che è anche la causa più veloce e migliore debuggable delle sue dimensioni più piccole. SpriteBatch sta cercando di rendere tutti felici. A mio avviso, non è davvero una Classe ottimizzata per le prestazioni. Ma comunque, grazie per aver chiarito che SpriteBatch utilizza la trama LAST BOUND e non solo TEXTURE0 – fky