有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java投影矩阵OpenGL/GLSL问题

我在尝试将投影矩阵应用于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


共 (1) 个答案

  1. # 1 楼答案

    这个

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

    对于向量变换来说毫无意义。“/”运算符在GLSL中应用于矩阵时,会进行组件范围的除法。你可能想要的是反转,这是一个完全不同的操作