問題タブ [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.
performance - drawrectで「CGContextDrawRadialGradient」の複数の使用を高速化する最良の方法は?
画像を投稿できませんでしたが、「CGContextDrawRadialGradient」メソッドを使用して、影付きの青いボール (直径 40 ピクセルまで) を描画し、ボールの周りに「パルス状の」白いリングを作成します (指輪)。リングは青いボールの端から始まり、外側に広がります (半径はタイマーで大きくなります)。白いリングは電波のように外側に広がりながら消えていきます。
シミュレーターでの実行は素晴らしいように見えますが、iPhone 4 での実行は非常に遅くなります。リングは (シミュレーターのように) 約 1 秒でパルスするはずですが、電話では 15 ~ 20 秒かかります。CALayer、CGLayer について少し読んで、いくつかのグラデーション アニメーションのセグメントを読んでいますが、最高のパフォーマンスを得るために何を使用すべきかは明確ではありません。
どうすればこれを高速化できますか。ボールをレイヤーに配置し、拡大するリングを別のレイヤーに配置する必要がありますか? もしそうなら、drawrect で更新するレイヤーをどのように知ることができますか?
ガイダンスに感謝します。ありがとう。
iphone - ビューレイヤーに影を追加する際の問題
私のビューの1つで、ビューに影を追加しています。影は左端と右端に白いスペースを示しているということです。これらのスペースを削除したいと思います。
これが私のコードです:
これが私の見解のo/pです:

iphone - iPhone - encoding and decoding a NSValue
So I read here on SO that I can encode a CGLayerRef to a NSValue using
but how do I recreate the CGLayerRef from myCopy?
thanks
iphone - iPhone - ディクショナリから CGlayer への値のプッシュとプル
元に戻す/やり直しを実装しているフィンガーペインティングビューがあります。すべての描画は、lineLayer と呼ばれる CGLayer で行われます。
ユーザーが画面に触れるとすぐに、画面に何らかの変更が加えられる前に、ビューのコンテンツをすばやく取得して元に戻すレベルを作成する必要があります。
時間がかかりすぎるため、ビューをディスクに保存することは明らかにオプションではありません。私が想像した解決策は、次のようなものを使用して、CGLayer を辞書にコピーすることです。
私はそれを辞書に保存します
後で使用して取得します
問題は、この読み取り操作によって lineLayer がまったく変更されないことです。今まで通りの内容で続けています。
何か不足していますか?
ありがとう。
ios - iOS: CGLayer で Retina ディスプレイをサポートするにはどうすればよいですか?
CALayer のデリゲート メソッドでグラフを描画していますdrawLayer:inContext:。
最新のデバイスではグラフがぼやけて見えるため、Retina ディスプレイをサポートしたいと考えています。
CALayer から渡されたグラフィックス コンテキストに直接描画する部分については、CALayer の contentScale プロパティを次のように設定することで、高解像度で適切に描画できました。
しかし、CGLayer を使用した部分はまだぼやけて描かれています。
Retina ディスプレイをサポートするために CGLayer に高解像度で描画するにはどうすればよいですか?
CGLayer を使用して、グラフの同じプロット形状を繰り返し描画したり、レイヤーの端を超えるグラフ線を切り取ったりしたいと考えています。
CALayer から渡されたグラフィックス コンテキストを使用してCGLayer を取得し、やCGLayerCreateWithContexなどの CG 関数を使用してそのコンテキストに描画します。CGContextFillPathCGContextAddLineToPoint
iOS 4.x と iOS 3.1.3 の両方、Retina とレガシー ディスプレイの両方をサポートする必要があります。
ありがとう、
くら
iphone - iPhone: グラデーション ポイントと透明な背景を持つ CGLayer を作成する
境界にグラデーションのあるポイントを含む CGLayer を作成したいと思います。このレイヤーを使用して、メイン画面に複数のポイントを描画するためです。
これは私のコードです: CGRect r = CGRectMake(0, 0, 64, 64); textureLayer = CGLayerCreateWithContext(context, r.size, NULL); CGContextRef textureContext = CGLayerGetContext(textureLayer);
私はこの結果を得ました:
それは正しいです。しかし、私が期待したようなストロークではなく、メイン画面に描画すると、これが結果です:
問題は CGLayer の白い背景だと思います。その背景を透明にするにはどうすればよいですか?
お手伝いありがとうございます。
macos - CarbonウィンドウのOpenGL3.2コンテキスト(OS Lion、Mono)
OpenTKフレームワークに最新のOSXサポートを追加しようとしています。Mac OS Lionは、OpenGL3.2コアコンテキストをサポートしています。CGLを使用して正常に取得できます。ただし、コンテキストをCarbonウィンドウにバインドする簡単な方法を見つけることができません。
以前のOpenTK実装はaglSetDrawableメソッドを使用していました。CGLには、同様の文書化されていないCGLSetSurfaceがありますが、公に代替手段はありません。これを使用しようとすると、エラーコード1001が返されますが、説明が見つかりません。
CarbonウィンドウでGL3.2を入手するのに何か助けはありますか?
ios - NSValueのCGLayerRef-retain()またはrelease()をいつ呼び出すか?
一部のグラフィックをCGLayersにキャッシュしてから、@ encodeを使用してNSValueオブジェクトに格納しています(配列に格納するため)。保持/解放を正しく処理することを確認したかっただけです...
グラフィックをキャッシュして、次のような配列に保存します。
そして後で、レイヤーを取得します。
配列(最初のコードスニペットの最後の行)に追加された後、レイヤーを解放する必要があると想定するのは正しいですか?コードの前半でcreate関数を呼び出したので、これが当てはまると思いました。NSValueは、レイヤーデータを追跡しますか?使用後にretrieveLayerを手動で解放する必要がありますか?
ありがとう
macos - CGLのコンテンツのスナップショットを取りますか?
CoreOpenGLコンテキストからイメージを作成したいと思います。
次のコードを使用しましたが、黒い画像が作成されます。だから私はそこでglReadPixlesを使うことができないと思いますか?他に何か提案はありますか?