OpenGL应用程序,失败的黑屏

时间:2014-03-23 14:52:51

标签: java opengl matrix glsl lwjgl

没有透视投影和视图矩阵我的场景很好: good rendering

如果我使用相机,结果很奇怪: not so good rendering

当我使用投影结合视图/相机矩阵时,我总是(即使朝各个方向移动)得到一个空屏幕,或者我喜欢称之为:" Faliure黑屏&# 34。

这是我传递给VS的矩阵:

模型Mat4 :( x轴上的模型旋转)

1.0 0.0 0.0 0.0 
0.0 0.4888726 0.8723553 0.0 
0.0 -0.8723553 0.4888726 0.0 
0.0 0.0 0.0 1.0 

查看Mat4 :(相机稍微移动并在y轴上旋转)

0.94107544 0.0 0.33819667 -0.53266037 
0.0 1.0 0.0 0.0 
-0.33819667 0.0 0.94107544 2.4321942 
0.0 0.0 0.0 1.0 

投影Mat4:

1.299038 0.0 0.0 0.0 
0.0 1.7320509 0.0 0.0 
0.0 0.0 1.002002 -2.002002 
0.0 0.0 1.0 0.0 

透视项目计算:

thf=tan(torad(60)/2); ar=800/600; zn=1; zf=1000;

1/(thf*ar) 0 0 0
0 1/thf 0 0 
0 0 (-zn-zf)/(zn-zf) 2*zn*zf/(zn-zf) 
0 0 1 0

我的顶点着色器:

#version 330

attribute layout(location = 0) vec3 Position;
attribute layout(location = 1) vec3 TexCoord;
attribute layout(location = 2) vec3 Normal;
out vec3 TexCoords;
uniform mat4 Model;
uniform mat4 View;
uniform mat4 Projection;

void main(){

    gl_Position = Projection * View * Model * vec4(Position, 1);
    TexCoords=TexCoord;     
}

1 个答案:

答案 0 :(得分:0)

事实证明,有时布尔可能会让你感到非常紧张。

 glUniformMatrix4(UniformHandle, true, ubo); // true for row-major order