アホイ!
GLKit に追加された新機能をブラッシュ アップするために、いくつかの古いテスト コードを更新することを検討しています。これまでのところ、GLKViewController をセットアップし、いくつかの基本的な形状のレンダリングを開始することができましたが、GLKBaseEffect に関する適切な情報を見つけるのに苦労しました。
GLKBaseEffect のドキュメントには次のように記載されています。
初期化時に、アプリケーションは最初に OpenGL ES 2.0 コンテキストを作成し、それを現在の状態にします。次に、新しい効果オブジェクトを割り当てて初期化し、そのプロパティを構成して、その prepareToDraw メソッドを呼び出します。エフェクトをバインドすると、シェーダーがコンパイルされ、現在の OpenGL ES コンテキストにバインドされます。ベース エフェクトでは、アプリケーションから提供される頂点データも必要です。頂点データを提供するには、1 つまたは複数の頂点配列オブジェクトを作成します。シェーダーが必要とする属性ごとに、頂点配列オブジェクトは属性を有効にし、頂点バッファー オブジェクトに格納されたデータを指す必要があります。
私が見分けるのに苦労しているのは;
レンダリングする「モデル」ごとに GLKBaseEffect オブジェクトが必要ですか? それとも、「シーン」ごとに 1 つの GLKBaseEffect を使用し、prepareToDraw を呼び出す前にその場でプロパティを変更するだけですか?
モデルごとに 1 つの GLKBaseEffect を単純に使用するゲーム エンジンとレンダラーのチュートリアルをいくつか見てきましたが、代わりに 1 つのインスタンスで同じことが達成できるとしたら、これはまったく非効率的です。
ドキュメントを読むと、これが最良のアプローチのように思えますが、非常に多くの人が複数のインスタンスを使用しているのを見たことを考えると、そうではないと思い始めています。
誰でもこれに光を当てることができますか?GLKit は iOS にとって (そして私にとって) まだかなり新しいので、どんな情報でも大歓迎です。