Results 1 to 4 of 4

Thread: Where can I find the gluLookAtf function for OpenGL ES?

  1. #1

    Where can I find the gluLookAtf function for OpenGL ES?

    I have searched for the gluLookAtf function,but can not find it. Does anyone know where it is?

  2. #2
    Junior Member
    Join Date
    Jan 2010
    Posts
    2

    Re: Where can I find the gluLookAtf function for OpenGL ES?

    There is no such method in ES, either in standard Open GL spec either. However, maybe this can help you
    void LookAt(TVector aPosition, TVector aLookAt, GLfloat aRoll)
    {
    TVector up, forward, right;
    TReal trg = 0;
    Math::Sin(trg, aRoll);
    up.iX = trg;
    Math::Cos(trg, aRoll);
    up.iY = -trg;
    up.iZ = 0;

    forward.iX = aLookAt.iX - aPosition.iX;
    forward.iY = aLookAt.iY - aPosition.iY;
    forward.iZ = aLookAt.iZ - aPosition.iZ;

    forward.Normalize();

    right = TVector::CrossProduct(up, forward);
    right.Normalize();

    up = TVector::CrossProduct(right, forward);
    up.Normalize();

    // Start building the matrix. The first three rows contain the
    // basis vectors used to rotate the view to point at the look-at point.
    MakeIdentity(&iViewMatrix[0][0]);

    iViewMatrix[0][0] = right.iX;
    iViewMatrix[1][0] = right.iY;
    iViewMatrix[2][0] = right.iZ;
    // iViewMatrix[3][0] = -aPosition.iX;

    iViewMatrix[0][1] = up.iX;
    iViewMatrix[1][1] = up.iY;
    iViewMatrix[2][1] = up.iZ;
    // iViewMatrix[3][1] = -aPosition.iY;

    iViewMatrix[0][2] = -forward.iX;
    iViewMatrix[1][2] = -forward.iY;
    iViewMatrix[2][2] = -forward.iZ;
    // iViewMatrix[3][2] = -aPosition.iZ;
    }

  3. #3

    Re: Where can I find the gluLookAtf function for OpenGL ES?

    Thanks, do you think I can use this method to solve the problem that I have with implementing a movement ,which makes it possible to find the position in 3d space? My problem is described in detail here:

    http://www.newlc.com/en/forum/how-get-p ... -opengl-es

  4. #4
    Junior Member
    Join Date
    Oct 2010
    Posts
    3

    Re: Where can I find the gluLookAtf function for OpenGL ES?

    Here is my porting for objective C.
    Hope you enjoy it:

    static void gluLookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez,
    GLfloat centerx, GLfloat centery, GLfloat centerz,
    GLfloat upx, GLfloat upy, GLfloat upz)
    {
    GLfloat m[16];
    GLfloat x[3], y[3], z[3];
    GLfloat mag;

    /* Make rotation matrix */

    /* Z vector */
    z[0] = eyex - centerx;
    z[1] = eyey - centery;
    z[2] = eyez - centerz;
    mag = sqrt(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]);
    if (mag) { /* mpichler, 19950515 */
    z[0] /= mag;
    z[1] /= mag;
    z[2] /= mag;
    }

    /* Y vector */
    y[0] = upx;
    y[1] = upy;
    y[2] = upz;

    /* X vector = Y cross Z */
    x[0] = y[1] * z[2] - y[2] * z[1];
    x[1] = -y[0] * z[2] + y[2] * z[0];
    x[2] = y[0] * z[1] - y[1] * z[0];

    /* Recompute Y = Z cross X */
    y[0] = z[1] * x[2] - z[2] * x[1];
    y[1] = -z[0] * x[2] + z[2] * x[0];
    y[2] = z[0] * x[1] - z[1] * x[0];

    /* mpichler, 19950515 */
    /* cross product gives area of parallelogram, which is < 1.0 for
    * non-perpendicular unit-length vectors; so normalize x, y here
    */

    mag = sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);
    if (mag) {
    x[0] /= mag;
    x[1] /= mag;
    x[2] /= mag;
    }

    mag = sqrt(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]);
    if (mag) {
    y[0] /= mag;
    y[1] /= mag;
    y[2] /= mag;
    }

    #define M(row,col) m[col*4+row]
    M(0, 0) = x[0];
    M(0, 1) = x[1];
    M(0, 2) = x[2];
    M(0, 3) = 0.0;
    M(1, 0) = y[0];
    M(1, 1) = y[1];
    M(1, 2) = y[2];
    M(1, 3) = 0.0;
    M(2, 0) = z[0];
    M(2, 1) = z[1];
    M(2, 2) = z[2];
    M(2, 3) = 0.0;
    M(3, 0) = 0.0;
    M(3, 1) = 0.0;
    M(3, 2) = 0.0;
    M(3, 3) = 1.0;
    #undef M
    glMultMatrixf(m);

    /* Translate Eye to Origin */
    glTranslatef(-eyex, -eyey, -eyez);

    }

Similar Threads

  1. Fully function opengl on pocketpc
    By russose in forum OpenGL ES general technical discussions
    Replies: 0
    Last Post: 09-15-2005, 06:23 AM
  2. Where should I specify OpenGL extension function prototy
    By tech64 in forum OpenGL ES general technical discussions
    Replies: 1
    Last Post: 04-27-2005, 11:07 AM
  3. What is the Function in OpenGL ES that have a same role
    By Jung in forum OpenGL ES general technical discussions
    Replies: 2
    Last Post: 11-22-2004, 11:10 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •