尝试将投影矩阵应用于GLSL中的对象时遇到问题。
这是GLSL代码:
#version 330
layout (location = 0) in vec3 pos;
uniform mat4 transformationMatrix;
uniform mat4 projectionMatrix;
out vec4 originalPos;
out vec4 transformedPos;
out vec4 col;
void main(){
col = vec4(pos, 1);
originalPos = (projectionMatrix / transformationMatrix) * vec4(pos, 1);
vec4 newPos = projectionMatrix * vec4(pos, 1);
transformedPos = newPos;
gl_Position = newPos;
}
在Windows上可以正常使用:
但是在Linux上不起作用:
我肯定知道与投影矩阵有关的某种问题,因为如果我省略矩阵应用程序,它就可以正常工作。
它是完全相同的代码和着色器。
使用lwjgl和Java。
最佳答案
这个
originalPos = (projectionMatrix / transformationMatrix) * vec4(pos,1);
矢量转换毫无意义。 '/'运算符在GLSL中应用于矩阵时,会进行组件范围的除法。您可能想要的是反转,这是完全不同的操作。