問題タブ [skia]
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.
android - Android の (2D) Canvas 描画パイプラインのピースはどのように組み合わされますか?
Android の (2D) Canvas 描画パイプラインのコンポーネントがどのように組み合わされるかについて、よりよく理解したいと思います。
たとえば、XferMode、Shader、MaskFilter、およびColorFilterはどのように相互作用しますか? これらのクラスのリファレンス ドキュメントはかなりまばらで、CanvasとPaintのドキュメントには有用な説明がまったく追加されていません。
また、固有の色を持つ描画操作 (例:drawBitmap
と のような「ベクトル」プリミティブdrawRect
) がこれらすべてにどのように適合するかは、私には完全には明らかではありません。それらは常に の色を無視し、Paint
代わりに固有の色を使用しますか?
また、次のようなことができるという事実にも驚きました。
これにより、楕円が消去されます。これに気付く前に、私のメンタルモデルは、キャンバスへの描画は(概念的に)別の「レイヤー」に描画され、そのレイヤーはペイントの転送モードを使用してキャンバスのビットマップで構成されるというものでした。CLEAR はソースのアルファに関係なく常に色 (およびアルファ) を 0 に設定するため、それがそれほど単純である場合、上記のコードはビットマップ全体 (クリッピング領域内) を消去します。したがって、これは、消去を楕円形に制限するために、追加の種類のマスキングが行われていることを意味します。
私はAPI デモを見つけましたが、各デモは「真空状態で」動作し、焦点を当てているもの (例: XferModes) が他のもの (例: ColorFilters) とどのように相互作用するかを示していません。
十分な時間と労力をかけて、これらの部分がどのように関連しているか、ソースを解読するかを経験的に理解することができましたが、他の誰かがすでにこれを解決しているか、パイプライン/描画モデルの実際のドキュメントがあることを願っています.私は逃した。
この質問は、別の SO question に対するこの回答のコードを見て触発されました。
アップデート
いくつかのドキュメントを探しているときに、ここで私が興味を持っているものの多くはskiaの上にあるかなり薄いベニヤのように見えるので、役立つスキーのドキュメントがいくつかあることに気づきました。私が見つけることができる最高のものは、次のようなドキュメントですSkPaint
。
ペイントに割り当てることができる効果には 6 種類あります。
- SkPathEffect - アルファ マスクを生成する前のジオメトリ (パス) への変更 (ダッシュなど)
- SkRasterizer - カスタム マスク レイヤー (シャドウなど) の作成
- SkMaskFilter - 色付けして描画する前のアルファ マスクの変更 (ぼかし、エンボスなど)
- SkShader - グラデーション (リニア、ラジアル、スイープ)、ビットマップ パターン (クランプ、リピート、ミラー) など
- SkColorFilter - xfermode を適用する前にソース カラーを変更します (カラー マトリックスなど)。
- SkXfermode - 例: porter-duff 転送モード、ブレンド モード
明示的には述べられていませんが、ここでの効果の順序は、パイプラインに表示される順序であると推測しています。
android - Android Canvasで「反転」ペイントを使用して描画するにはどうすればよいですか?
キャンバスに何かを描きます。逆の色で円を描きたいです。
myPaint
円のピクセルが下にあるピクセルの反転色になるように構成するにはどうすればよいですか?
ありがとう
android - AndroidNDKでのSkiaの使用
android.graphics。*がネイティブのSkiaライブラリに依存しているというのは本当ですか?もしそうなら、私のネイティブC / C ++コードでSkiaライブラリにアクセスすることは可能ですか?
skia - UbuntuでSkiaを使ってグラフィックを学びたい
グラフィックプログラミングを学びたい、Skiaをライブラリとして使いたい。Ubuntuでそれを始めるにはどうすればよいですか?
android - Cygwinの下でAndroidツリーでSkiaをコンパイルしようとしています
Cygwin の Android ツリーで Skia をコンパイルしようとしていますが、次のエラー メッセージが表示されます。
GCC が ARMv7-A をサポートしていないためですか?
android - Android - 画像の skia デコード エラー
次のように画像をデコードしようとしています:
画像は取得できますが、デコードされず、次のエラーがスローされます。
09-29 11:27:38.675: DEBUG/skia(14907): --- デコーダー > デコードが false を返しました
skia エラーを処理するこのコードに従っています: http://code.google.com/p/shelves/source/browse/trunk/Shelves/src/org/curiouscreature/android/shelves/util/ImageUtilities.java
しかし、それは問題を解決しません。
誰でも助けてもらえますか?
android - Android Skia リモート サーフェス
こんにちは、「レンダリングされていない」レンダリング呼び出しを Android から 2 番目の画面に転送する可能性を調査していました。調査中に、Skia が Surfacefinger と Canvas.draw() メソッドの背後にあることがわかりました。だから私の質問は今、2番目のスクリーン/マシンに使用するためにコールを分岐するのに最適なインターセプトポイントは何ですか. 2 番目のデバイスは純粋なリプレイ デバイスではなく、別の Android デバイスにすることができます。
最初にその概念に VNC を使用しましたが、ダブル バッファリング効果のためにパフォーマンスが悪いことがすぐにわかりました。ダブル バッファリングを省略した意味で Android コードを操作することもできますが、それでも興味深い実際には、おそらくスケーリングされた 2 番目のデバイスで、事前にレンダリングされた呼び出しを使用します。
ありがとう
2d - SkPicture の堅牢性は?
Skia では、何かを SkPicture に記録すると、必要なすべてのメモリが保持されることが保証されますか? すなわち
drawPicture() がクラッシュする原因となるものを削除できるシナリオはありますか、それとも常に動作することが保証されていますか?
android - Android Skia logcat 出力のドキュメントはありますか?
logcat で次のメッセージが表示されることがあります。
そして、私はそれが何を意味するのかわかりません。グーグルで検索すると、おそらくビットマップ ファクトリのインスタンス化を表す C++ ファイルが見つかりました。
C++ ファイルを読むのは楽しいことですが、これらのメッセージが何を意味するかについてのドキュメントはありますか? 奇妙なバグを追跡しなければならなかったことが何度かあり、後で Skia メッセージが関連性があることが判明したか、少なくとも関連性があるように見えました。
java - BitmapRegionDecoderの制限に関するアイデア
最近、BitmapRegionDecoderでメモリの問題が発生し始めました。奇妙なことに、はい、パーツのみを読み取るように設計されており、必要なパーツは通常100〜200ピクセル×100〜200ピクセルです。
私の質問は、BitmapRegionDecoderで使用できる画像のサイズの制限はどこにありますか?たとえば、合計で約500MBの50,000x30,000JPEGで問題が発生しています。(これは高解像度のマップであるため、サイズです。)