OpenGL in Java, Manual creatation of gluLookAt matrix

OpenGL uses columnmajor matrices. You appear
to be filling your matrix rowbyrow, this would
actually work in Direct3D (rowmajor) FYI.
The simplest solution would be to call
mLookatMx.transpose (...) (if you
were using a proper matrix class); this would flip
the rows and columns for you.
However, since you are using a plain old
FloatBuffer , you need to put
(...) the contents of your matrix one
column at a time instead of one row at a time.
By the way, at its core OpenGL always uses
matrices for transformations. Those Euler angle
and quaternion helper utilities really just create
transformation matrices for OpenGL. You can
implement nonmatrix based transformations in
vertex shaders, but that is more advanced than you
should be thinking right now :)

Related to : OpenGL in Java, Manual creatation of gluLookAt matrix

openGL rendering glulookat 
you messed up your object transformation matrices
correct code (untested)
void GLScene::paintGL() {
glClear(GL_COLOR_BUFFER_BIT  GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0 ,0 ,20,
0,0,1,
0, 1, 0 );
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0,0);
glBegin(GL_POLYGON);
glVertex3f(0,0,0);
glVertex3f(0,100,0);
glVertex3f

OpenGL gluLookAt why the up vector instead of an angle 
The up vector you pass in is used to indicate the up direction, but
this is used with a cross product. I think the purpose of gluLookAt is
to simplify the calculations needed by the user, so for example you
would just pass (0,1,0) to indicate that the up direction you desire
is along the positive Yaxis.
If you want better efficiency you could avoid gluLookAt entirely

opengl glulookat strange behavior 
That is because you don't reset the matrices, after each render or at
the beginning of each render.
Basically, you need to call glLoadIdentity(); that will reset the
current selected matrix, but setting the matrix's values to the
default values (Matrix Identity).

OpenGL. gluLookAt function not working 
The last three parameters aren't exactly the rotation, but the "up"
vector. If you do not want a distorted view, the up vector should be
perpendicular to your direction vector, which here is {5, 2, 2}.
Among all the perpendicular vectors, the one you will choose will
define the rotation as you call it.
In your example, the most upward perpendicular vector (the one you
would use in a first per

how to convert modelview matrix to gluLookAt parameters? 
From any 4x4 matrix we can get gluLookAt parameters which are
CameraPos, CameraTarget, UpVector.
Here is the code to get CameraPos, CameraTarget, UpVector from
ModelView matrix.
float modelViewMat[16];
glGetFloatv(GL_MODELVIEW_MATRIX, modelViewMat);
// Here instead of model view matrix we can pass any 4x4 matrix.
float params[9];
GetGluLookAtParameters(modelViewMat, params);
CameraPos.x = param



