Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es 如何计算注视时眼点的Z位置?_Opengl Es_Perspectivecamera - Fatal编程技术网

Opengl es 如何计算注视时眼点的Z位置?

Opengl es 如何计算注视时眼点的Z位置?,opengl-es,perspectivecamera,Opengl Es,Perspectivecamera,我画了一个矩形,并用图像的纹理将其绑定。然后我做了一些旋转,过渡和缩放。它与正交投影完美结合 现在我正在尝试透视投影 mat4 model = mTranslate(shiftX(), shiftY(), 0.0f)*mRotate(rX, rY, rZ)*mScale(this->kx(), this->ky(), 0.0f); mat4 MVP = projectionMatr(20.0f * (M_PI / 180), aspect, 0.1f, 10000.0f)*lookA

我画了一个矩形,并用图像的纹理将其绑定。然后我做了一些旋转,过渡和缩放。它与正交投影完美结合

现在我正在尝试透视投影

mat4 model = mTranslate(shiftX(), shiftY(), 0.0f)*mRotate(rX, rY, rZ)*mScale(this->kx(), this->ky(), 0.0f);
mat4 MVP = projectionMatr(20.0f * (M_PI / 180), aspect, 0.1f, 10000.0f)*lookAt(0,0,eyeZ,0,0,0,0,1,0)*model;
例如,我的图像等于200*300像素。我希望我的矩形在iPad屏幕上不超过200*300点。所以我需要正确地计算eyeZ


如何计算eyeZ?

这是一个小信息,但是,如果使用模型矩阵变换矩形,则取(角点的)最小z值,并将其称为zmin。 取f为(20.0f*(M_PI/180))/2的余切。(假设projectionMatr使用等效矩阵作为透视图)

然后,如果取eyeZ=max(f+zmin,f/aspect+zmin)


矩形最近点的投影应为1:1(其余点较小),因此投影将是小于或等于原始矩形的最大投影(如果以相同单位测量)。

最后一句话有点太粗体了:这是最大投影,没有像素投影大于原始矩形。