Sto scrivendo un gioco 3D che utilizza GL10, ma mi piacerebbe che l'applicazione supporti GL11 o GL20 se disponibile. Qual è il miglior design per supportare tutti e 3? O è un compito da scemo e dovrei concentrarmi solo sul supporto di una versione?Come supporto OpenGL ES GL10, GL11 e GL20 in Libgdx?
La mia idea attuale è di dividere la mia funzione render() in renderGL10, renderGL11, renderGL20 e chiamare la funzione di rendering appropriata in base all'istanza GL disponibile. All'interno di ogni funzione di rendering è il modo corretto di renderizzare per la versione GL; ci saranno probabilmente sovrapposizioni per GL10 e GL11. È un modo appropriato per gestire il mio problema o esiste un modo migliore?
public render(){
if (Gdx.graphics.isGL20Available()){
renderGL20();
} else if (Gdx.graphics.isGL11Available()){
renderGL11();
} else {
renderGL10();
}
}
EDIT: Soluzione: Se gl1.x è disponibile, GL10 è anche disponibile (e Gdx.gl10 non è nullo). Quindi, il mio codice di rendering dovrebbe essere generalmente strutturato come segue:
public render(){
// Use Gdx.gl for any gl calls common to all versions
if (Gdx.graphics.isGL20Available()){
// Use Gdx.GL20 for all gl calls
} else {
if (Gdx.graphics.isGL11Available()){
// Use Gdx.gl11 for any gl11 call not supported by gl10
}
// Use Gdx.gl10 for all gl calls
}
}
Non uso ancora molte parti artistiche della libreria; Sto esplorando come voglio progettarlo senza molta conoscenza di gles2.0 o di come libgdx tratti gl1.x. Sto usando questo gioco per espandere la mia conoscenza della programmazione di giochi e GLES, quindi mi piacerebbe supportare entrambi, così posso provare ad imparare GLSL. Basandomi sulla tua risposta su 1.x, ho appena dato una rapida occhiata al sorgente per i backend Android e Jogl e ho notato che quando gl11 è disponibile, Gdx.gl10 = Gdx.gl11; Mi aspettavo che gl10 sarebbe nullo se gl11 fosse impostato (allo stesso modo gl10 e gl11 sono nulli quando 2.0 è disponibile). Questo e la tua risposta hanno davvero aiutato. – Doran