Android opengl坐标

Android opengl坐标,android,opengl-es,Android,Opengl Es,我最近开始使用openGL,因为普通视图中的画布已经不能满足我的需要。但我似乎无法理解opengl中的坐标系统 当我制作一个底部坐标为y=0的矩形时,我会在屏幕的上半部分得到一个矩形的结果。这是可以预料的 但是,当我设置y=0.25f时,我希望矩形是屏幕顶部的四分之一。但事实上,它的数量较少,大约是1/6或1/7 或者当我尝试y=0.375f(应该是屏幕的1/8)时,结果是1/11或1/12。有人能解释为什么会这样吗?我错过了什么。那么,我如何制作一个矩形,填充屏幕顶部的1/8 (我知道屏幕顶部

我最近开始使用openGL,因为普通视图中的画布已经不能满足我的需要。但我似乎无法理解opengl中的坐标系统

当我制作一个底部坐标为y=0的矩形时,我会在屏幕的上半部分得到一个矩形的结果。这是可以预料的

但是,当我设置y=0.25f时,我希望矩形是屏幕顶部的四分之一。但事实上,它的数量较少,大约是1/6或1/7

或者当我尝试y=0.375f(应该是屏幕的1/8)时,结果是1/11或1/12。有人能解释为什么会这样吗?我错过了什么。那么,我如何制作一个矩形,填充屏幕顶部的1/8


(我知道屏幕顶部和底部在放大im时有-+0.5f坐标)

这可能是由于相机在视图矩阵中的位置造成的。 回想一下OpenGL中坐标系的方向:

  • +右x点
  • +y向上指
  • +z指向屏幕外
  • (0,0,0)位于屏幕中央
要设置相机,请执行以下操作:

Matrix.setLookAtM(mVMatrix, 0, 0, 0, 2, 0f, 0f, 0f, 0f, 1.0f, 0f); 

// My camera is located at (0,0,2),
// it's looking toward (0,0,0)
// its top is pointing along (0,1,0) aka. Y-axis. 
如果我的矩形位于XY平面上的某个位置,意味着Z坐标为0,那么我的相机在正Z轴上距离它2个单位。从该位置查看矩形会使其看起来比预期的小。若要使矩形看起来更大,请尝试通过更改其在视图矩阵中的位置将摄影机移近它。我将Z坐标从下面的2更改为1:

Matrix.setLookAtM(mVMatrix, 0, 0, 0, 1, 0f, 0f, 0f, 0f, 1.0f, 0f); 

// My camera is located at (0,0,1),
// it's looking toward (0,0,0)
// its top is pointing along (0,1,0) aka. Y-axis. 

这可能是由于摄影机在视图矩阵中的位置造成的。 回想一下OpenGL中坐标系的方向:

  • +右x点
  • +y向上指
  • +z指向屏幕外
  • (0,0,0)位于屏幕中央
要设置相机,请执行以下操作:

Matrix.setLookAtM(mVMatrix, 0, 0, 0, 2, 0f, 0f, 0f, 0f, 1.0f, 0f); 

// My camera is located at (0,0,2),
// it's looking toward (0,0,0)
// its top is pointing along (0,1,0) aka. Y-axis. 
如果我的矩形位于XY平面上的某个位置,意味着Z坐标为0,那么我的相机在正Z轴上距离它2个单位。从该位置查看矩形会使其看起来比预期的小。若要使矩形看起来更大,请尝试通过更改其在视图矩阵中的位置将摄影机移近它。我将Z坐标从下面的2更改为1:

Matrix.setLookAtM(mVMatrix, 0, 0, 0, 1, 0f, 0f, 0f, 0f, 1.0f, 0f); 

// My camera is located at (0,0,1),
// it's looking toward (0,0,0)
// its top is pointing along (0,1,0) aka. Y-axis. 

示例中的代码示例如下:

  • 定义摄影机视图

    在本例中,生成y轴范围为-1到+1的坐标系

  • 定义投影

    修正窗口比例


  • 示例中的代码示例如下:

  • 定义摄影机视图

    在本例中,生成y轴范围为-1到+1的坐标系

  • 定义投影

    修正窗口比例