我正在使用Renderscript for Android。我刚刚更新到工具的第21版。我的项目(已经工作了一年多)已停止使用此更新进行编译。该项目基于'Carousel'演示。
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 }
};
答案 0 :(得分:2)
嗯,用float3
代替float4
为我工作。
答案 1 :(得分:1)
虽然Plane的特定实例化标记为静态,但很可能您有另一个此类型的非静态实例。这是您在上面看到的错误消息的唯一方法。