2012-01-29 13 views
0

私のアプリでは、その後ろにビジュアライザー付きのイコライザーがあります。EAGLLayer上にQuartz 2Dを描画することは可能ですか?

イコライザは、Quartz 2Dを使用してパスを描いたイメージビューである一連のドットです(周波数とゲインの量を示すために下と左に目盛りが付いています)。その背後には、OpenGLを使用してCAEAGLLayerでビジュアライザーを作成しています。

これは、視覚化ツールを処理するビューコントローラのメインビューのサブビューがあり、その上にはパスを描画するメインビューの別のサブビューがあります。これらの両方の上には、eqポイントの画像ビューがあります。

何が起こるかは、曲が始まり、ビジュアライザーが描画を開始するまでパスが細かく描画されます。それはその上のQuartz 2Dを拭き取っているようだ。上記のビューでsetNeedsDisplayを呼び出すと、描画するたびにsetNeedsDisplayが呼び出されても機能しません。 OpenGLのようにそこに描画する排他的なアクセスが与えられています。しかし、UIImageView eqのポイントは目に見えます。

glレイヤーを含むビューの上にQuartz 2Dを使用する方法はありますか?私は、OpenGLを使ってパスとティックマークを描画するためにOpenGLを使用したくないので、512x512または1024x1024のいずれかのテクスチャに描画してスケールしなければならないので、完璧に見えないので、すでにQuartzすべてを描画するコード。

答えて

1

glレイヤーを含むビューの上にQuartz 2Dを使用する方法はありますか?

はい、これは明示的にサポートされています。 docsは、この設定のために描画を最適化する方法の詳細も示します。

あなたの意見は実際には間違った順序であり、GLビューは一番上にあると思われます。まず、GL表示がopaqueとマークされていることを確認してください(パフォーマンスは良いですが、順序が間違っていると表示されるため)。次に、表示順序を確認します(メインビューのsubviewsを確認してください)。

+0

うわー私は恥ずかしいことからこの質問をほとんど削除したいと思っています... IBのリストの一番上にある項目がビュー階層の一番下にあることを忘れていました。週に6日のiOS開発の2年間を回し、それでもそのようなことはほとんど忘れています。 :P何らかの理由で、私はちょうどそれを見て、自分自身に "うん、それは上にある"と言って、それを動かすことは一度もしなかった。ありがとう:) –

+0

私は私のインターネットハンドルに値するものではないことを証明するチャンスを逃すことは決してありません! –

関連する問題