問題タブ [cglayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
749 参照

macos - CGL コンテキストで CGImageRef & CGBitmapContextRef を描画しますか?

CGL Context で CGImageref と CGBitmapContextRef を描画する方法を探していますか?

0 投票する
2 に答える
270 参照

iphone - 再描画を強制せずにUIViewサブビューを削除するには?

これはやや仮説的な質問ですが、将来のある時点でこの状況が発生することは想像できます。一度だけレンダリングする必要がある非常に複雑な UIView の階層があると仮定しましょう。また、いったん描画されたら、親ビューの下にある情報 (UIImages、ラベル、カスタム ビュー、座標など) をそれ以上使用しないと仮定しましょう。それらを保持するのではなく、再描画を回避しながら、使用する余分なメモリをすべて解放するという考えです。結果は、オフスクリーン バッファに描画してからオンスクリーンにプッシュした場合と同じになります。UIView/CGLayer をそのまま使用してこれを達成することは可能ですか、それとも親 CGLayer のコンテンツを UIImage に変換する唯一のオプションですか?

ちょっと興味があるんだけど。ほとんどの状況で、いくつかの余分なビューを保持するオーバーヘッドは無視できると思いますが、メモリはメモリであり、ビットマップの割り当て以外に公式ドキュメントで何も見つけることができませんでした.

ありがとう!

0 投票する
2 に答える
550 参照

performance - オフスクリーンCGLayerを現在のコンテキストにブリットするときのジャギーパス

現在のプロジェクトでは、いくつかのUITableViewセルの背景として複雑な背景を描画する必要があります。この背景を描画するためのコードは、セルのdrawRect:メソッドで実行するとかなり長くCPUに負担がかかるため、全体的なパフォーマンスを向上させるために、CGLayerに1回だけレンダリングしてから、セルにブリットすることにしました。

CGLayerに背景を描画するために使用しているコード:

レイヤーを現在のコンテキストにブリットするコード:

これは実際にはかなりうまくいきますが、私が抱えている唯一の問題は、角が丸いことです(静的メソッドを確認してください)。画面にブリットしたときに非常にギザギザです。これは、描画コードが元の位置(drawRectメソッド内)にある場合には当てはまりませんでした。

このアンチエイリアスを取り戻すにはどうすればよいですか?

何らかの理由で、次の方法はアンチエイリアスに影響を与えません。

前もって感謝します!

0 投票する
1 に答える
493 参照

iphone - CGLayer オフスクリーンを作成するために CGContext にアクセスする方法

意図:オフスクリーンを作成CGLayerし、2番目のスレッドから複雑なものを描画し、後でメインスレッドですばやく描画するために使用します

問題: どのようなコンテキストで最適化する必要があるかを知るために、CGLayerCreateWithContext(context, size, info)既存のが必要です。CGContext

これまでに見つけた解決策: CGContextRef ctx = UIGraphicSetCurrentContext() しかし、この機能はもう存在しないようです。

質問:デフォルト コンテキストのようなものにアクセスする別の方法はありませんか? それとも、 1回の無駄な描画実行でメインスレッドからすべてdrawRect:にアクセスUIGraphicsGetCurrentContext()して作成するためだけに、最初の呼び出しを待つ必要がありますか?CGLayers

0 投票する
1 に答える
2956 参照

objective-c - CGL vs AGL vs OpenGL vs NSOpenGL vs CoreAnimation(CALayer)

私は、レイヤーの形でのOpenGLフレームワーク統合に関連するMac上のいくつかのことを理解しようとしています。基本的に、OS Xに存在する3Dテクノロジーと、OpenGLの実際のインペンションレイヤーがどのレイヤーであるかを理解したい場合です。

アップルのドキュメントを読んで、これまでに理解したことは次のとおりです。

1.NSOpenGLContextオブジェクトは、低レベルのプラットフォーム固有のCore OpenGL(CGL)コンテキストをラップします。

=これにより、NSOpenGLがCGLを利用していることが明確になります。

2. AGL(Apple Graphics Library)APIは、MacOSXでのOpenGLのApple実装の一部です。

=では、AGLとCGLは何らかの形で関連していますか?

3.CGL(Core OpenGL)は、AppleがOpenGLを実装するための最低レベルのプログラミングインターフェイスです。

=標準のOpenGLAPIがCGLの単なるラッパーであることを意味しますか?

4.CoreAnimationは、Core Graphics、Open-GL、Quick-timeの組み合わせのようです。しかし、その下で何が使用されているのかわかりません。つまり、実際の実装レイヤーです。これもCGLですか?

物事は私には完全に明確ではありません。私はまだ読んでいて、過去にいくらか関連した質問をしましたが、知識は不完全です。

誰かが問題について彼の理解を共有することができれば本当にありがたいです。

0 投票する
1 に答える
2850 参照

objective-c - 目標 c - 角が丸い UINavigationBar

ナビゲーション バーの角を丸くしたい (左上と右上)

それを実現するこのコードを見つけました:

しかし、1 つ問題があります。ナブ バーにコーナー エッジがなくなったため、何千ものコーナーが透明になり、その背後のビューを見ることができます。
透明にしたくないので、そこに黒い色を入れたいです。
誰もそれを行う方法を知っていますか?

0 投票する
1 に答える
591 参照

objective-c - CGLayers がブレンドされないのはなぜですか?

obj2 が obj1 とブレンドされないのに、CGLayer を使用しないと正常に動作するのはなぜですか? CGContextDrawLayerAtPoint と同じ問題があります。

0 投票する
1 に答える
2464 参照

cocoa-touch - アニメーション ブロックでレイヤーの anchorPoint を設定すると、ビューがジャンプするのはなぜですか?

iOS アプリのビューに UIPanGestureRecognizer をアタッチしています。パン ハンドラーのコードをTouches サンプル アプリからコピーしました。ジェスチャが開始すると、私のコード:

  • 元のアンカー ポイントと中心を記録します。
  • 次のように、アンカー ポイントと中心をユーザーの指の周りに変更します。

    /li>

ジェスチャが進行するにつれて、パン ハンドラーは指の動きを追跡するために中心を継続的に変更します。ここまでは順調ですね。

ユーザーが手放したら、ビューをアニメーション化して元の開始点に戻します。これを行うコードは次のようになります。

そして、それはビューをアニメーション化して元の開始点に戻します。ただし、アニメーションが開始する前に、ビューは UI の別の場所にジャンプします。IOW、手放すとジャンプし、元の場所にアニメーションで戻ります。

おそらく、アニメーションの外側にアンカーポイントと中心を設定する必要があると思いました。おそらく、ジェスチャーが始まるときのように、中心をスーパービューの場所に設定する必要があると思いましたが、それは違いはないようです.

ここで何が欠けていますか?ユーザーが手放したときにジャンプを防ぐにはどうすればよいですか?

0 投票する
0 に答える
53 参照

iphone - iOS で、既存のグラフィックス コンテキストを使用してレイヤーを作成する必要があるのはなぜですか?

重複の可能性:
iOS では、コンテキストからレイヤーを作成し、レイヤーのコンテキストを取得した後、これらのコンテキストは互いにどのように関連していますか?

iOS ではCGLayerCreateWithContext、既存のグラフィックス コンテキストを使用して を実行でき、 を取得できます。CGLayerまた、 を使用してこの CGLayer のグラフィックス コンテキストを取得することもできますCGLayerGetContext

CGLayer既存の Graphics Context を使用してこれを作成する必要があるのはなぜですか? グラフィックス コンテキストが存在しない状態で作成することはできませんか? このレイヤーのグラフィックス コンテキストを取得すると、元のグラフィックス コンテキストとどのように関連するのでしょうか? それらは、2 つの別個の独立したグラフィックス コンテキストではないでしょうか?

0 投票する
2 に答える
4846 参照

ios - iOS で、描画された画面イメージをキャッシュして表示する最速の方法は何ですか?

drawRect毎回何千ものポイントを再描画する代わりに、 「画面上の画像をキャッシュする」方法と追加の描画を行う方法がいくつかあると思います。その画像に追加し、必要なときにその画像を表示しdrawRectます。

  1. BitmapContext を使用してビットマップにdrawRect描画し、 でこのビットマップを描画します。

  2. を使用CGLayerして描画しCGLayerますdrawRect。この画像はグラフィックス カードにキャッシュされるため、方法 1 よりも高速になる可能性があります (iOS の「メモリ警告」の RAM 使用量にはカウントされませんか?)

  3. に描画しCGImage、ビューのレイヤーを使用します。view.layer.contents = (id) cgimage;

CALayerしたがって、3つの方法があるようですが、方法(3)では a のみを使用しCGImageてそれを達成 できると思います。(2)CALayerのように、それ自体では画面イメージをキャッシュできません。CGLayer

方法 (2) は 3 つすべての中で最速であり、これを達成できる他の方法はありますか? 私は実際にいくつかの画面イメージをアニメーション化することを計画しており (そのうちの 5 つまたは 6 つをループします)、CADisplayLink60fps の最高フレーム レートを試してみます。方法 (1)、(2)、または (3) のいずれかがグラフィックス カードのメモリを使用するため、RAM を使用しないため、iOS からもメモリ警告が表示される可能性は低くなりますか?