与矢量数组,Android OpenGL ES相乘的模型矩阵

时间:2016-05-01 20:12:03

标签: java android matrix opengl-es

以下代码似乎无法正确转换float []数组,以将其作为统一的vec4 []传递给顶点着色器。为什么这不起作用?

private static short STRIDE = 4;    
private final float[] modelMatrix = new float[16];
private float[] worldVertices = new float[12];
private static float[] modelVertices = {1f, 0f, 0f, 1f,
                                        0f, 1f, 0f, 1f,
                                        0f, 0f, 1f, 1f };
setIdentityM(modelMatrix, 0);

[计算增量]

translateM(modelMatrix, 0, dx, dy, dz); 

// PROBLEM CODE: 
for (short i = 0; i < 3 * STRIDE; i += STRIDE)
        multiplyMV(worldVertices, i, modelMatrix, 0, modelVertices, i);

然后将worldVertices传递给顶点着色器。用分量数学代替循环会产生正确的结果。执行模型向量乘法以保持数组一维的最佳方法是什么?

解决!

源vec4数组的偏移似乎不起作用,它需要一个float [4] rHs,但仍然可以将结果存储在float [4 * n] lHs中。

float[] t = new float[4];

for (int i = 0; i < length; i++) {
    for (int j = 0; j < 4; j++) t[j] = source[j + i * 4];
    multiplyMV(result, i * 4, Matrix, 0, t, 0);
}

0 个答案:

没有答案