我想將兩個Renderscript腳本合併到一個scriptGroup中。第一個是ScriptIntrinsicBlur。基於模糊的U8分配作爲輸入,第二個腳本計算兩件事:梯度和梯度方向。後者是正式的第二個內核的分配。第一個是通過rsSetElementAt_float()填充的全局分配。現在,我發現這個第二個分配在scriptGroup執行後返回空。RenderScript ScriptGroups - 在第二個內核中從腳本全局獲取輸出
問題:我的假設是否正確,使用腳本組不能使用腳本全局變量 - 或者至少不能通過rsSetElementAt _(...)更改它們?
更新:我意識到,通過使用U8作爲ScriptIntrinsicBlur的輸出和作爲專有內核的輸入的性能增益已經非常令人滿意,即使在兩個腳本的簡單順序設置中也是如此。這主要是因爲它在將它作爲單獨的輸入分配傳遞給第二個內核之前,先避免將ScriptIntrinsicBlur的out-Allocation複製到Java數組中。
之前,我使用U8_4(即等效位圖)作爲ScriptIntrinsicBlur的輸出,然後在將其作爲in-Allocation傳遞給專有內核之前,將它轉換爲一維灰度int []數組...現在,我在將輸入分配到ScriptIntrinsicBlur之前已轉換爲灰度字節[](即U8),並將U8也用作第二個內核的輸入。
這是我一次又一次意識到使用RS時的感受:真正值得儘可能簡化數據流,速度的提升真是太棒了。 (也許我會在後期檢查Scriptgroup問題,至於現在我對結果感到滿意)。
謝謝,拉里,看到我上面的更新。 – Settembrini