RenderScript不生成输出 修改:更新

问题描述

我是Android上的RenderScript的新手,我正在尝试建立最基本的“ hello world”类型的RenderScript用法来处理位图图像。这个最小的示例应该只是将输出位图设置为纯色(红色),而忽略输入图像。

这是从MainActivity调用的我的Kotlin代码

        var rs = RenderScript.create(this)
        val script = ScriptC_simple_effect(rs)

        val conf = Bitmap.Config.ARGB_8888
        val width = 2
        val height = 2
        val inbmp = Bitmap.createBitmap(width,height,conf)
        val outbmp = Bitmap.createBitmap(width,conf)

        var inAllocation = Allocation.createFromBitmap(rs,inbmp)
        var outAllocation = Allocation.createFromBitmap(rs,outbmp)
        
        inAllocation.copyFrom(inbmp)
        script.forEach_makeRed(inAllocation,outAllocation)
        outAllocation.copyTo(outbmp)

        val pixels = IntArray(width * height)
        outbmp.getPixels(pixels,outbmp.width,width,height)

这是simple_effect渲染脚本代码

#pragma version(1)
#pragma rs java_package_name(com.xxxxx.yyyyy.zzzzz) // redacted

uchar4 RS_KERNEL makeRed(uchar4 in)
{
    uchar4 out;
    out.r = 255;
    out.g = 0;
    out.b = 0;
    out.a = 255;
    return out;
}

build.gradle在android defaultConfig部分中包含以下内容

        renderscriptTargetApi 18
        renderscriptSupportModeEnabled true

我期望看到最终的输出位图包含所有红色像素。

实际结果是,在仿真器中运行时,输出像素IntArray的所有Ints均为0,而在实际设备上运行时,则均为-1(0xFFFFFFFF)。我没有运行时错误或警告。

我做错了什么?为什么我没有得到输出

(您能从此代码中分辨出来吗?如果问题可能出在其他地方,请让我知道可能还需要其他信息。)

修改:更新

事实证明,如果我将其包含在build.gradle中:

renderscriptSupportModeEnabled true

...并且我使用这些导入:

import android.graphics.Bitmap
import android.graphics.Color
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.renderscript.Allocation
import androidx.renderscript.RenderScript

...,那么它无法正常工作输出只是白色。

但是,如果我删除renderscriptSupportModeEnabled声明,并将渲染脚本导入从androidx.更改为android.,那么它可以正常工作,并且输出为达到预期的红色。

import android.graphics.Bitmap
import android.graphics.Color
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.renderscript.Allocation
import android.renderscript.RenderScript

我对为什么感到困惑。谁能解释?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)