如何初始化rs_matrix4x4类型的常量?

时间:2017-09-06 08:59:48

标签: android renderscript

如何初始化rs_matrix4x4类型的常量?

像这样的东西

const rs_matrix4x4 xyz2rgb_m = {
     3.2406, -1.5372, -0.4986, 0.0000,
    -0.9689,  1.8758,  0.0415, 0.0000,
     0.0557, -0.2040,  1.0570, 0.0000,
     0.0000,  0.0000,  0.0000, 1.0000};

不起作用。编译器返回错误消息:

Error:(11, 20) error: Reflection of initializer to variable 'xyz2rgb_m' (of type 'rs_matrix4x4') is unsupported currently.

我应该按元素初始化函数元素中的矩阵吗?

1 个答案:

答案 0 :(得分:0)

rsMatrixLoad初始化时,set of functions有一个共同名称为rs_matrix4x4的{​​{3}}。它们可以从数组或矩阵中加载矩阵元素。

例如,可以使用此函数按数组值进行初始化:

void rsMatrixLoad(rs_matrix2x2* destination, const float* array);

例如:

void init() {
    float rgb2xyz_m_data[] = {
         0.4124, 0.3576, 0.1805, 0.0000,
         0.2126, 0.7152, 0.0722, 0.0000,
         0.0193, 0.1192, 0.9505, 0.0000,
         0.0000, 0.0000, 0.0000, 1.0000};

    rsMatrixLoad(&rgb2xyz_m, rgb2xyz_m_data);
}

还有一组加载特殊矩阵的方法(例如投影)。