Renderscript无法导出静态变量

时间:2012-11-17 03:34:35

标签: android renderscript

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

2 个答案:

答案 0 :(得分:2)

嗯,用float3代替float4为我工作。

答案 1 :(得分:1)

虽然Plane的特定实例化标记为静态,但很可能您有另一个此类型的非静态实例。这是您在上面看到的错误消息的唯一方法。