Opengl es on android problem with object opsition on projection matrix
Opengl es on android problem with object opsition on projection matrix
我尝试使用 opengl es 3 显示对象。一切正常,直到我尝试设置相机视图。当我将 vPMatrix 与相机矩阵相乘时,投影矩阵对象就消失了。
float[] projectionMatrix = new float[16];
float[] vPMatrix = new float[16];
float[] camera = new float[16];
Matrix.frustumM(
projectionMatrix,
0,
-1,
1,
-1,
1,
3,
7
);
Matrix.setLookAtM(
camera
, 0
//where i am
, 0f
, 0f
, 1f
//what i looking for
, 0f
, 0f
, -1f
//where is top
, 0f
, 1f
, 0f
);
Matrix.multiplyMM(
vPMatrix,
0,
projectionMatrix,
0,
camera,
0
);
我通过如下设置相机修复了该错误:
Matrix.setLookAtM(
camera
, 0
//where i am
, 0f
, 0f
, 5f
//what i looking for
, 0f
, 0f
, 0f
//where is top
, 0f
, 1f
, 0f
);
但我不明白为什么旧版本不好(我在找 z)。如果有人能给我解释一下,请 post 你回答。
几何体很可能被 Viewing frustum 的近平面剪裁。请注意,如果几何图形不在近平面和远平面之间,则几何图形将被剪裁。
您在设置透视投影时指定到近平面的距离为 3,到远平面的距离为 7:
Matrix.frustumM(projectionMatrix, 0, -1, 1, -1, 1, 3, 7);
但是视角到世界中心的距离只有1:
Matrix.setLookAtM(camera, 0, 0f, 0f, 1f, ...);
你有2个选项。要么换个角度:
Matrix.setLookAtM(camera, 0, 0f, 0f, 5f, ...);
或者改变近平面和远平面。例如:
Matrix.frustumM(projectionMatrix, 0, -1, 1, -1, 1, 0.1, 100);
我尝试使用 opengl es 3 显示对象。一切正常,直到我尝试设置相机视图。当我将 vPMatrix 与相机矩阵相乘时,投影矩阵对象就消失了。
float[] projectionMatrix = new float[16];
float[] vPMatrix = new float[16];
float[] camera = new float[16];
Matrix.frustumM(
projectionMatrix,
0,
-1,
1,
-1,
1,
3,
7
);
Matrix.setLookAtM(
camera
, 0
//where i am
, 0f
, 0f
, 1f
//what i looking for
, 0f
, 0f
, -1f
//where is top
, 0f
, 1f
, 0f
);
Matrix.multiplyMM(
vPMatrix,
0,
projectionMatrix,
0,
camera,
0
);
我通过如下设置相机修复了该错误:
Matrix.setLookAtM(
camera
, 0
//where i am
, 0f
, 0f
, 5f
//what i looking for
, 0f
, 0f
, 0f
//where is top
, 0f
, 1f
, 0f
);
但我不明白为什么旧版本不好(我在找 z)。如果有人能给我解释一下,请 post 你回答。
几何体很可能被 Viewing frustum 的近平面剪裁。请注意,如果几何图形不在近平面和远平面之间,则几何图形将被剪裁。
您在设置透视投影时指定到近平面的距离为 3,到远平面的距离为 7:
Matrix.frustumM(projectionMatrix, 0, -1, 1, -1, 1, 3, 7);
但是视角到世界中心的距离只有1:
Matrix.setLookAtM(camera, 0, 0f, 0f, 1f, ...);
你有2个选项。要么换个角度:
Matrix.setLookAtM(camera, 0, 0f, 0f, 5f, ...);
或者改变近平面和远平面。例如:
Matrix.frustumM(projectionMatrix, 0, -1, 1, -1, 1, 0.1, 100);