私はGL10を使用している3Dゲームを書いていますが、GL11またはGL20が利用可能であれば、そのアプリケーションがサポートしてほしいです。 3つすべてをサポートするための最良のデザインは何ですか?それとも、これは愚かなことですか?私はちょうど1つのバージョンをサポートすることに集中すべきですか?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();
}
}
EDIT: ソリューション: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
}
}
私はまだライブラリのアート部分をあまり使っていません。私は、gles2.0やlibgdxがgl1.xをどのように扱うかをあまり知らないうちに、どのように設計したいのかを探っています。私はこのゲームを使ってゲームプログラミングとGLESの知識を広げていますので、私は両方をサポートしたいので、私はGLSLを学ぼうとすることができます。 1.xに関するあなたの答えに基づいて、AndroidとJoglバックエンドのソースを簡単に見て、gl11が利用可能なときにGdx.gl10 = Gdx.gl11; gl11が設定されているとgl10がnullになることが予想されました(2.0が利用可能な場合、gl10とgl11はnullになります)。これとあなたの答えは本当に助けになりました。 – Doran