【发布时间】:2014-09-22 17:05:33
【问题描述】:
我在尝试将投影矩阵应用于 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 吗?如果是这样,您是否正在创建核心上下文?如果没有,那么您将受限于 OpenGL 3.0 功能。其中不包括
#version 330。 -
在运行着色器之前检查过代码是否存在 OpenGL 错误?也许您正在使用一些在 Linux 中无法正常工作的特定于 Windows 的代码?
-
我正在创建一个核心上下文,并且在每个渲染操作结束时执行 glGetError()。只是没有错误
标签: java opengl matrix lwjgl projection