2016-02-27 8 views
0

我想將兩個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問題,至於現在我對結果感到滿意)。

回答

0

像這樣使用全局腳本應該沒有問題。它不像輸出分配那樣高效,但是可能的。你提到out配置是空的,你在全局腳本中看到了什麼?

+0

謝謝,拉里,看到我上面的更新。 – Settembrini