AndroidでOpenGL ES 1.0または2.0を使用することを決定する方法 [閉まっている]


7

私はいくつかのAndroid開発を学び始めました。私が最初にできると思ったのは単純なゲームです。しかし、私はすぐに難しい質問に直面しました。OpenGL ES 1.0または2.0を使用する必要がありますか?

私が想定しているゲームは、2D(タイル張りのトップダウンタイプのグラフィック)と固定カメラのアイソメビューを利用して、グラフィックがかなりシンプルになります。私はデスクトップ環境でOpenGLを使用したことがないので、シェーダーが私が使用するものになるかどうかについては気づいていません。

このページによると私は一般的に新しい開発にはOpenGL ES 2.0を使用する必要があります。私の携帯電話は最近(昨年)必要なAndroid 2.2にアップデートするようになりました。(OpenGL ES 2.0がサポートされているかどうかさえわかりません)

したがって、基本的に私の質問は、1.0を超えるOpenGL ES 2.0の機能のいずれかから利益を得るか、互換性の点で価値があるのか​​、あるいはその両方ですか?


またはあなたのための仕事のほとんどを行うには、オープンソースのグラフィックスライブラリを使用します。libgdx
ToolmakerSteve

回答:


7

OpenGLの経験がまったくないか、ほとんどない場合、2.0はお勧めしません。

OpenGL ES 2.xでは、マトリックス操作用の独自のルーチンを記述し、独自のシェーダーを記述する必要があります。これは多くの作業であり、多くはうまくいかず、これらの多くのデバッグは非常に苦痛です。

OpenGL ES 2.0が持ついくつかの機能が必要になると思われる場合にのみ、それを使用してください。

編集:上記で十分ではない場合は、OpenGL ES 1.xで簡単な例を作成してから、OpenGL ES 2.xで同じ例を作成することをお勧めします。たとえば、テクスチャが適用された回転する立方体を描くことができます。


最初は0でしたが、編集の場合は-1でした。特に「恐怖」の部分は逆効果です。
Christian Rau、2012年

次に、2つのうちの簡単な方から始めます。私はすでにAndroidを学び、そのままJavaを磨くつもりなので、今はもっと簡単に学べるようにします
Earlz

@ChristianRau-それでも「怖い」は、仕様に出会ったときにシェーダーを記述して基本的なことを行うという2.0の要件とまったく同じでした。1.0 APIにフォールバックしない限り、Androidでは、GLSurfaceView.Rendererを実装するすべてのプログラマーが、たとえ要件が単純であっても、シェーダーを処理する必要があることに驚いています。Canvasクラスのようなものが表示されることを期待していましたが、3Dフォーカスで書き直され、優れたパフォーマンスを発揮しました。最終的にはシェーダーを使用することを期待していましたが、最も基本的なものについてもですか?(私はlibgdxを使用する可能性がありますが、組み込みのソリューションではないことに驚いていました。)
ToolmakerSteve

@ToolmakerSteveさて、要件が単純であれば、シェーダーも簡単です。たとえば、完全に変換され、照らされ、テクスチャリングされたオブジェクトを示す単純なシェーダーペアは、完全な頂点シェーダーとフラグメントシェーダーごとに、たとえば約10行を超えるコードを必要としません。シェーダーとマトリックス処理(とにかくライブラリを使用する準備がたくさんある)は非常に単純です。ロケットサイエンスではありません(ただし、JavaScriptでもありません)。立方体を回転する以上のことをしたい場合(つまり、GLの初日の後)は、とにかくシェーダーを避けたくはありません。
Christian Rau

1

まあそれは依存します。私はESの経験はありませんが、一般的な質問は常に同じです。古い機能と非推奨の固定機能と最新のシェーダー中心のアプローチです。

初心者にとって古いES 1 APIの方が理解しやすく、API全体を理解しなくても簡単なことを達成しやすいという点でstepheltonは正しいです(そして、何をしているのかを理解せずにシェーダーを使用する人の1人になることを防ぎます) )、それにもかかわらず、すぐにリアルタイムグラフィックを実行する最新の方法から始めることをお勧めします。最初はシェーダーの柔軟性は必要ないかもしれませんが、基本を管理すれば非常に価値があります。そしてそれは、今日(そして明日)にハードウェアアクセラレーションによるリアルタイムグラフィックスを実現する方法です。

互換性が問題になる可能性があります(そして、ESデバイスの現在のスタンドに関する概要はありません)一方で、デスクトップGLを使用する場合、人工的にGL 1.1のみの機能に制限せず、15をサポートするだけです20年前のグラフィックカードに。つまり、進歩はどこかで始まる必要があります。


1
私はこれに強く同意しません。ESで簡単なアプリ(おそらく回転するテクスチャキューブ)を実行するために必要な作業量は網羅的であり、問​​題が発生する可能性が非常に多くあります。ES 2では、マトリックス機能(プッシュ/ポップ、変換、回転、スケーリングなど)がなく、すべてのシェーダーを最初から作成する必要があることを理解してください。人がこれらの概念に一度もさらされたことがない場合、彼らは確かにそれらを最初に正しく理解するつもりはありません。
notlesh 2012年

1
通常のOpenGL(<= 3.0)とは異なり、これらは非推奨ではなく、存在しません。ですから、周りを構築している間、それらを松葉杖として使用することはできません。すべてを一から構築する必要があります。初心者にとって、OpenGL ES 2.xは、アーキテクチャについて何も知らずに、ゼロからオフィスビルを構築しようとするようなものです。
notlesh

1
@stepheltonしかし、とにかくそれらのこと(マトリックスに関するもの)を理解する必要があります。また、OpenGLから削除しても、ハードウェアに実装されていると誤解されることはありません。誰かがマトリックス関連のものを実装する必要があります。グラフィックハードウェアとは何の関係もないため、これを行うのは実際にはOpenGLの仕事ではありません。まだいじりたくない場合は、ライブラリを入手してください。優れた学習リソースを使用し、最初から世界に挑戦しようとしないでください。その後、シェーダーのみのES 2から始めても問題ありません。
Christian Rau、2012年

1
@stepheltonそして、グラフィックスは簡単ではなく、古い固定機能アプローチを使用して変換、ライティング、テクスチャリングを行うので、実際に何が行われているのかを理解する必要がなく、実際の代替手段ではありません(そしてとにかくそれをはるかに簡単にします)。回転する立方体よりも複雑な操作を行うと(初心者が最初に行うことは確かですが)、追加のオーバーヘッドはなくなります。さらに、何らかの形でそれらをくしゃくしゃにするよりも簡単にアイデアを実装できるため、オーバーヘッドが少なくなります。固定機能機能に。
Christian Rau、2012年

1
@ChristianRau、私はあなたが2つのOpenGLバージョンを少し極性化していると思います。彼は自分のキャリアをどちらかに集中すべきかどうか尋ねていません。彼はES 2.xが彼の簡単なゲームに適切で必要かどうかを尋ねています。ES 2.xは確かに1.xよりも優れており、2.xを学ぶことは良いことだと私は同意しますが、OpenGLの初心者がES 2.xから始めることはお勧めできません。歩く前に這うことを学びなさい。ES 2.xははるかに複雑である(より多くの学習、より多くの作業、より多くのデバッグ...)だけでなく、Android市場のかなりの部分から彼を締め出します。
notlesh 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.