Передача матриц в glsl просто не сработает?

В настоящее время я использую lwjgl и программирую glsl 1.20.

Вот как выглядит код, который пытается отправить матрицу с плавающей запятой 4x4 в шейдеры:

    int normalMatrixLocation = ARBShaderObjects.glGetUniformLocationARB(handlers.ShaderHandler.get().getShader("sphere"), "normalMatrix");
    tempFloatBuffer = BufferUtils.createFloatBuffer(16);
    tempFloatBuffer.put(helpers.Matrix.doubleToFloat4x4(normalMatrix.getArray()));
    tempFloatBuffer.rewind();
    ARBShaderObjects.glUniformMatrix4ARB(normalMatrixLocation, false, tempFloatBuffer);

Вспомогательная функция выглядит так:

    public static float[] doubleToFloat4x4(double[][] dArray) {
        float[] newFloat = new float[16];
        for(int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                newFloat[j+4*i] = (float)dArray[i][j];
            }
        }
        return newFloat;
    }

И в шейдере у меня есть следующее, чтобы я мог использовать его для различных функций шейдеров:

uniform mat4 normalMatrix;

Хотя эта форма всегда является пустой матрицей 4x4 ...

Что я делаю не так?

5
задан genpfault 8 December 2011 в 16:39
поделиться