我在试图将投影矩阵应用于GLSL中的对象时遇到问题。投影矩阵OpenGL/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。
你在检查着色器编译/链接日志吗?你在Linux上使用Mesa吗?如果是这样,你是否创建了一个Core上下文?如果没有,那么你将仅限于OpenGL 3.0功能。哪个*不包含'#version 330'。 – genpfault 2014-09-22 17:15:54
在运行着色器之前,你检查过OpenGL错误代码吗?也许你正在使用一些Windows特定的代码,在Linux中无法正常工作? – Dan 2014-09-22 17:16:16
我正在创建一个Core上下文,并在每个渲染操作结束时执行glGetError()。只是没有错误 – mcat 2014-09-22 17:28:40