我目前正在使用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);
Run Code Online (Sandbox Code Playgroud)
辅助函数看起来像这样:
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;
}
Run Code Online (Sandbox Code Playgroud)
在着色器中我有以下内容,以便我可以使用它在着色器中使用不同的功能:
uniform mat4 normalMatrix;
Run Code Online (Sandbox Code Playgroud)
虽然这种制服总是空的4x4矩阵......
我究竟做错了什么?
归档时间: |
|
查看次数: |
1539 次 |
最近记录: |