1

私にはそれについてはわかりませんが、それが可能であれば(たとえば、Flashのように)、それは本当に素晴らしいことです。

おそらくいくつかのOpenGLES機能が必要なビューベースのアプリがありますが、フルスクリーンのOpenGLESは必要ありません。コアグラフィックスでは難しいかもしれない小さなチャートやその他のものを描くために、特定の小さな領域でそれが必要です。

4

3 に答える 3

2

はい、可能ですが、使用しないことを強くお勧めします

Apple Technical Note TN2230: Optimizing OpenGL ES for iPhone OSは、すべてのすべきこととすべきでないことをカバーしています。

ベスト プラクティスをカバーするこの Apple のドキュメントは、その他の推奨事項と禁止事項を理解するのに役立ちます。

于 2009-05-31T18:11:11.920 に答える
1

はい、

レイヤーを使用して Quartz Core を介してこれを実装できるはずです (CALayer クラスのドキュメントを参照してください)。実際、レイヤー階層を持つことができます。基本的に、各 UIView を異なるレイヤーに関連付けると、レイヤーが一緒にレンダリングされ、単一の複合レイヤーが提供されます。さらに、レイヤーに変換とアニメーションを適用することもできます。

QuartzCore ヘッダーをインポートして、次のようにする必要があります

#import <QuartzCore/QuartzCore.h>
UIView *myView = [[UIView alloc] initWithFrame...
UIView *openGLView = [UIView alloc] initWithFrame...

CaLayer *myViewLayer = myView.layer;
[myViewLayer addSubLayer: openGLView.layer];

次に、myView が画面に表示されると、すべてのサブレイヤーが結合され、画面にレンダリングされます。何が起こるかというと、各ビューはそのレイヤーをレンダリングし、myViewLayer は 2 つのレイヤーをマージしてレンダリングされます。

好きなだけレイヤーを持つことができます。CALayer メソッドを使用して、任意の階層を作成できます。

– addSublayer: – removeFromSuperlayer
– insertSublayer:atIndex:
– insertSublayer:below:
– insertSublayer:above:
– replaceSublayer:with:

于 2009-05-31T08:15:36.097 に答える
0

この「テクニック」は非常にうまく機能し、非常に一般的です。UIKitはこの種の目的のためだけに設計されているため、逆の方法でも機能します(バックグラウンド、フォアグラウンド、または任意の組み合わせのOpenGL)。不透明フラグをオフにすることを忘れないでください。

しかし、アクティブにアニメーション化されているCALayerにGLをレンダリングすることについてはよくわかりません。アニメーション中に更新されない場合があります。=)楽しんでください!

于 2010-06-28T14:43:11.400 に答える