投影矩阵OpenGL / GLSL问题

时间:2014-09-22 17:05:34

标签: java opengl matrix lwjgl projection

我在尝试将投影矩阵应用于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上完美运行: Rendering on Windows

但它不适用于Linux: Rendering on Linux

我肯定知道某些与投影矩阵有关的问题,因为如果省略矩阵应用程序,它就可以正常工作。

完全相同的代码和着色器。

使用lwjgl和Java。

2 个答案:

答案 0 :(得分:4)

originalPos = (projectionMatrix / transformationMatrix) * vec4(pos,1);
对于矢量转换,

毫无意义。 ' /'运算符,当在GLSL中应用于矩阵时,会进行组件范围的划分。您可能想要的是反转,这是一种完全不同的操作。

答案 1 :(得分:0)

解决方案:

这听起来很奇怪,但删除了:

originalPos = (projectionMatrix / transformationMatrix) * vec4(pos,1);

和transformationMatrix,它完全正常。那段代码是对闪电的考验。

相关问题