我在試圖將投影矩陣應用於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