我正在使用适用于 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 }
};