【发布时间】:2014-09-20 23:05:50
【问题描述】:
我目前正在我的 enigne 中实现矩阵。使用标准的 glTranslate 和 glRotate 然后在着色器中使用 ftransform() 它可以工作。不是手动完成的。
我如何将矩阵赋予着色器:
public static void loadMatrix(int location, Matrix4f matrix)
{
FloatBuffer buffer = BufferUtils.createFloatBuffer(16);
matrix.store(buffer);
buffer.flip();
glUniformMatrix4(location, false, buffer);
}
发送viewMatrix:
shaderEngine.loadMatrix(glGetUniformLocation(shaderEngine.standard, "viewMatrix"), camera.viewMatrix);
shaderEngine.loadMatrix(glGetUniformLocation(shaderEngine.obj, "viewMatrix"), camera.viewMatrix);
System.out.println(camera.viewMatrix.toString());
在着色器中我得到它:
uniform mat4 viewMatrix;
在着色器主程序中,我设置了碎片颜色:
gl_FragColor = vec4(viewMatrix[0][3] / -256,0,0,1);
这是黑色的(所以 viewMatrix[0][3] == 0),而我在 java 中的矩阵输出如下所示:
1.0 0.0 0.0 -128.0
0.0 1.0 0.0 -22.75
0.0 0.0 1.0 -128.0
0.0 0.0 0.0 1.0
【问题讨论】:
标签: opengl matrix shader lwjgl