他の多くの人と同じように、私は優れたOpenGLES2.0チュートリアルを夢中になって探してきました。しかし、私は利用可能なものを味わったようですが、それでも自信がありません。1.1には固定パイプラインがあるのに対し、2.0ではプログラマーの好みにすべてが任されていることを私は知っています。そのため、1.1チュートリアルからライトやテクスチャなどを学習し、それらの概念を学習した後、シェーダーを使用して、準備完了機能として提供されていないすべての作業を手動で実行できると思いました。私は正しい方向に進んでいると思いますか、それともやめるべきですか?
1 に答える
あなたの質問はもう少し主観的であるため、私の回答には必然的に個人的な意見が含まれますが、OpenGL ES を 1.1 で学習し始めることはもはや役に立たず、人々は 2.0 から始める必要があると考えています。iOS では、2.0 を処理できないアクティブなデバイスの数は 5% 未満と推定されています (売上高に基づくと、この数の最大値は 16% になる可能性があります)。利用可能なハードウェアが多様であるため、数字を特定するのに苦労したため、Android の統計について話すことはできませんが、これも 2.0 に非常に有利であるように見えます。
技術的な面に関して言えば、最初に 1.1 を学んでも得られるものはあまりないと思います。なぜなら、2.0 に移行するときに多くのことを窓から放り出してしまうからです。1.1 でライトとマテリアル プロパティをセットアップするための特定の API 呼び出しを学習しても、2.0 でこれを行うには独自のシェーダー プログラムを作成する必要があるため、あまり意味がありません。これらのライトなどが 1.1 の固定機能パイプラインでどのように機能するかについての洞察は実際には得られません。これは単なるブラック ボックスのように機能するためです。2.0 に移行するときが来たとき、1.1 で計算されていたものを本当に理解していないことがわかったので、古い API の経験から多くを得ることができませんでした。
この 2 つの共通点は、2.0 から同じように学ぶことができます。
1.1 が 2.0 より優れている大きな利点の 1 つは、サンプル コードとチュートリアル資料が利用できることです。ただし、人々が新しい API に移行するにつれて、時間の経過とともに改善されています。このトピックで見つけた最高の資料のいくつかを (iOS に重点を置いて)この回答で説明します。そこで示したように、私は 1.1 と 2.0 の両方のクラスを教えました。これらのクラスはiTunes U で無料で見つけることができます。このコース ノートには、1.1 の機能を複製する方法を示すために私が集めたいくつかの単純な 2.0 の例へのリンクがあります。この回答では、一部の 1.1 コードを 2.0 に移行する方法についても説明しています(ここにリンクしている PowerVR リファレンスは、2.0 シェーダーで 1.1 エフェクトを生成する方法を示すのに特に適しています)。
個人的には、OpenGL ES 2.0 は 1.1 よりもはるかに使いやすいと感じています。これは主に、2.0 API がはるかに単純であると感じているためです。シーンを適切な方法でセットアップするためのすべてのコマンドを覚える必要はなく、API でできることとできないこともありません。簡単なGLSLコードを書いて、やりたいことをやるだけです。