2

我正在使用适用于 Android 的 Renderscript。我刚刚更新到工具的修订版 21。我的项目(已经工作了一年多)停止编译这个更新。该项目基于“轮播”演示。

Eclipse 给了我一堆类似于以下的错误:

error: structs containing vectors of dimension 3 cannot be exported at this API level: carouselPlane'

产生上述错误的代码是:

static Plane carouselPlane = {
   { 0.0f, 0.0f, 0.0f }, // point
   { 0.0f, 1.0f, 0.0f }, // normal
   0.0f // plane constant (= -dot(P, N))
};

我不明白无法导出是什么意思。该代码块被特别标记为静态以防止导出。

其他人在 r21 上也遇到过这个问题吗?

我知道 Android 4.2(与 r21 同时发布)有一些关于在 GPU 上运行 Renderscript 计算的特殊功能。这与这个问题有关吗?

有什么已知的解决方法吗?

编辑

根据要求,这里是上述的极简示例

#pragma version(1)
#pragma rs java_package_name(com.example);

typedef struct Plane_s {
    float3 point;
} Plane;

static Plane carouselPlane = {
    { 0.0f, 0.0f, 0.0f }
};
4

2 回答 2

2

嗯,替换float3float4为我工作。

于 2012-11-23T21:39:23.410 回答
1

尽管 Plane 的特定实例被标记为静态,但您很可能有另一个此类型的非静态实例。这是触发您在上面看到的错误消息的唯一方式。

于 2012-11-28T03:24:12.617 回答