在ios目标arm64中使用gluUnproject

时间:2016-02-06 20:59:54

标签: ios openframeworks arm64

当我定位arm7时,gluUnproject链接正常,现在我不得不切换到arm64,openframeworks附带的ios编译的glu库抱怨没有arm64符号,因此它被忽略,导致链接器错误。

我找到了GLUT的源代码

https://www.opengl.org/resources/libraries/glut/glut_downloads.php

我没有看到任何有意为ios编译的提及。可以为ios arm64目标编译吗?可以从任何地方预编译下载吗?

1 个答案:

答案 0 :(得分:0)

正如rhashimito指出的那样,我可以自己定义这个功能。我发现了一个glu的实现

gluUnProject(GLdouble winx, GLdouble winy, GLdouble winz,
    const GLdouble modelMatrix[16], 
    const GLdouble projMatrix[16],
            const GLint viewport[4],
        GLdouble *objx, GLdouble *objy, GLdouble *objz)
{
double finalMatrix[16];
double in[4];
double out[4];

__gluMultMatricesd(modelMatrix, projMatrix, finalMatrix);
if (!__gluInvertMatrixd(finalMatrix, finalMatrix)) return(GL_FALSE);

in[0]=winx;
in[1]=winy;
in[2]=winz;
in[3]=1.0;

/* Map x and y from window coordinates */
in[0] = (in[0] - viewport[0]) / viewport[2];
in[1] = (in[1] - viewport[1]) / viewport[3];

/* Map to range -1 to 1 */
in[0] = in[0] * 2 - 1;
in[1] = in[1] * 2 - 1;
in[2] = in[2] * 2 - 1;

__gluMultMatrixVecd(finalMatrix, in, out);
if (out[3] == 0.0) return(GL_FALSE);
out[0] /= out[3];
out[1] /= out[3];
out[2] /= out[3];
*objx = out[0];
*objy = out[1];
*objz = out[2];
return(GL_TRUE);
}