問題タブ [android-renderscript]
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 Renderscript で隣接ピクセルを透明に設定
特定の色のピクセルをクリアするスクリプトがあります。
私がJavaで実行していること:
それは機能しますが、RenderScript で特定の色のピクセルを持つ明確なピクセルの隣人が必要ですか? 飽和状態では、すべてのピクセルを処理していますが、すべてのピクセルにアクセスする方法がわかりません。
java - renderscript ファイルに渡された配列を計算する方法
配列が .rs ファイルに渡される Android で renderscript を作成したいと考えています。これらの値に対して何らかの計算が行われ、ユーザーに返されます。
renderscript についてはほとんど理解していないので、私が書いたものも完全に間違っている可能性があります。それを手伝ってください。
Android アクティビティ public class RenderTemp extends Activity {
snow.rs
android - ScriptIntrinsicYuvToRGB または YUV420 割り当てが壊れていますか?
renderscript の ScriptIntrinsicYuvToRGB クラスを使用して、ソースが YUV420 形式の YUV から RGB への変換を試みます。ファイルから読み取った 3 つの未加工のプレーンがあり、それらを YUV 種類の割り当てにフィードして、ScriptIntrinsicYuvToRGB.forEach を介して渡します。
輝度 (Y プレーン) は正しく変換されますが、クロマ チャネルが buf[w*h] の場所からすべての値を読み取るように見えるため、色では失敗します。コード サンプルのコメント部分を参照してください。Allocation が UV プレーンに適切に対処しない場合、バグのように見えます。割り当て時に関数を使用してスクリプトでテストし、rsGetElementAtYuv_uchar_U
どの座標に対しても同じ値 (buf[w*h] から) を与えるため、そう推測します。
ストライド/オフセットなどのYUV形式をさらに指定できるかどうか、すべての場所を検索しましたが、その設定Element.DataKind.PIXEL_YUV
とType.Builder.setYuvFormat(ImageFormat.YUV_420_888)
..
誰かがこれを手伝ってくれますか?
java - RenderScript でカウント変数をインクリメントする
次の RenderScript コードを使用してビットマップのピクセルをカウントしたい
RenderScript
ファイル名:counter.rs
ジャワ
エラー
これは私が得るエラーメッセージです:
エラー: カウントのアドレスが見つかりません
質問
- コードが機能しないのはなぜですか?
- どうすれば修正できますか?
リンク
android - RenderScript でローカル/プライベート配列を宣言する方法は?
私の調査によると、RenderScript 内からメモリを割り当てることはできないことがわかりました。たとえばint* values = new int[10];
、C99 では許可されていません。この配列が処理中の現在のピクセルに対してのみローカルであるようにしたいと思います。このような動的割り当ては、カーネル関数内で宣言およびインスタンス化されている場合に保証されます。
私はそれint values[10];
が有効な宣言であることを知っています。これを RenderScript の先頭に配置すると、グローバル配列になり、Java コードから ( を使用してAllocation
) 設定できるようになります。
int values[10];
現在のピクセルに対してローカルであると想定したカーネルの中に入れてみました。単一値の変数 (uint32_t、float4 など) を宣言することは、現在のピクセルに対して確実にローカルであることを知っています。ただし、カーネル内で宣言された配列は依然としてグローバル変数であり、他のすべてのピクセルはそれから読み書きできます。
ご参考までに、現在のピクセル (x, y) から隣接するピクセルにアクセスしたいと思います。それを引っ張ることができました。ただし、最も頻繁に発生する色成分、その配列が並べ替えられた後の正確な中間成分などを選択する必要がある場合があるため、いくつかのピクセル情報 (隣接するピクセルの色成分のそれぞれのようなもの) を配列に格納する必要があります。 . だから、私はモード フィルタとメジアン フィルタ、さらには油絵効果を取得しようとしています - これらはすべて、ローカル配列に隣接するピクセル データを格納する必要があります。
では、RenderScript でローカル/プライベート配列を宣言するにはどうすればよいでしょうか?現在処理中のピクセルだけが触れることができます。それが不可能な場合、単一値変数のみを使用してタスクを必要とするローカル配列をシミュレートするにはどうすればよいですか?
アップデート
上記int values3[256];
は確かに現在のスレッドに対してローカルです。望ましくないゴミの値が含まれている可能性があることがわかりました。デフォルトでは、各インデックスの値は 0 であると仮定しました。ある人もいれば、そうでない人もいます。そのため、他のすべてのスレッドがそれに書き込みを行っていると思いました。上記を集計するつもりだったので、期待どおりに常に 0 から開始するとは限りませんでした。それが私の計算が外れていた理由です!
renderscript - rsSetElementAt_type() 関数を使用して renderscript グローバルの値を設定する方法
Android RenderScript の場合:
カーネルは、複数の入力または出力割り当てを持つことはできません。複数の入力または出力が必要な場合は、それらのオブジェクトを rs_allocation スクリプト グローバルにバインドし、 または を介してカーネルまたは呼び出し可能な関数からアクセスする必要がありrsGetElementAt_type()
ますrsSetElementAt_type()
。
これで、関数rsGetElementAt_type()
が 3 つのパラメーターを受け取ることがわかりました。
しかし、グローバル rsSetElementAt_type() の値を設定する方法がわかりません
この関数が取るパラメータとその順序を教えてください。
AndroidのドキュメントとGoogleを検索しましたが、見つかりませんでした