Я пишу трехмерную игру, в которой используется 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
}
}