Как мне поддерживать OpenGL ES GL10, GL11 и GL20 в Libgdx?

Я пишу трехмерную игру, в которой используется 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
  }
}
5
задан Lestat 8 December 2013 в 02:01
поделиться