1

RenderScriptの1つの割り当てからもっと多くの要素にアクセスしたいと思います。のは、Googleからのサンプルコードを見てみましょう:それは配分の要素である1つのuchar4を取るRenderScriptカーネルでもっと多くの要素にアクセスできますか? [Android]

uchar4 __attribute__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) { 
    uchar4 out = in; 
    out.r = 255 - in.r; 
    out.g = 255 - in.g; 
    out.b = 255 - in.b; 
    return out; 
} 

。複数の要素にアクセスして操作することは可能ですか?たとえば、ビットマップから8ピクセルのループをアンロールする。

ありがとうございます。

答えて

4

あなたが書いたカーネルは、現在のピクセルデータに基づいて現在のピクセル(x、y)を操作することができます。隣接ピクセルにアクセスするには、割り当て内をグローバル割り当てとして定義してから、rsGetElementAt_uchar4()で近傍にアクセスする必要があります。イラストだけのために、以下の例を参照してください。

rs_allocation in; 

uchar4 __attribute__((kernel)) doCalc(uint32_t x, uint32_t y) { 
    uchar4 out; 

    uchar4 same= rsGetElementAt_uchar4(in, x,y); 
    uchar4 top= rsGetElementAt_uchar4(in, x,y-1); 
    uchar4 left= rsGetElementAt_uchar4(in, x-1,y); 
    uchar4 right= rsGetElementAt_uchar4(in, x+1,y); 
    // (...) 

out.r= // do whatever you want with same.r, top.r, left.r etc 
out.g= // do whatever you want with same.g, top.g, left.g etc 
out.b=... 
out.a=255; 

return out; 

} 
+0

ありがとうございます! – gabrielication

関連する問題