我正在编写一个使用GL10的3D游戏,但是如果可用,我想使应用程序支持GL11或GL20。那么支持全部三种版本的最佳设计是什么?或者这是徒劳无功的,我应该只专注于支持一个版本?
我的当前想法是将render()函数分成renderGL10、renderGL11和renderGL20,并根据可用的GL实例调用适当的渲染函数。每个渲染函数内部是适用于该GL版本的渲染方式;GL10和GL11可能会有重叠。这种解决问题的方法是否合适?还是有更好的方法?
我的当前想法是将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不为null)。因此,我的渲染代码通常应按以下结构组织:
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
}
}