我正在寫一個使用GL10的3D遊戲,但我希望應用程序支持GL11或GL20(如果可用)。支持所有3的最佳設計是什麼?或者這是一個傻瓜的差事,我應該只關注支持一個版本?如何在Libgdx中支持OpenGL ES GL10,GL11和GL20?
我目前的想法是將我的render()函數分成renderGL10,renderGL11,renderGL20,並根據可用的GL實例調用適當的渲染函數。每個渲染函數內部都是渲染GL版本的正確方法; GL10和GL11可能會有重疊。這是處理我的問題的適當方式還是有更好的方法?
public render(){
if (Gdx.graphics.isGL20Available()){
renderGL20();
} else if (Gdx.graphics.isGL11Available()){
renderGL11();
} else {
renderGL10();
}
}
編輯: 解決方法:如果gl1.x可用,GL10也可以(和Gdx.gl10不爲空)。
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
}
}
我不使用圖書館的許多藝術部分,我正在探索如何設計它,而沒有太多的gles2.0知識或者libgdx如何處理gl1.x.我使用這個遊戲來擴展我對遊戲編程和GLES的知識,所以我想支持這兩個,所以我可以嘗試學習GLSL。基於你關於1.x的回答,我只是簡單地看了一下Android和Jogl後端的源代碼,並注意到當gl11可用時,Gdx.gl10 = Gdx.gl11;如果設置了gl11,我預計gl10將爲空(當2.0可用時,gl10和gl11爲空)。這和你的答案真的有幫助。 – Doran