for the model texture/vertices depth problem, it seems to be fixed (not 100% sure) by adding this "glEnable(GL_DEPTH_TEST);" in the native code before calling jpct render code.. but still need to test more to confirm that since it is very difficult to rotate out the 3d model and see that in the view coz i am experimenting with the matrix.
Currently i am testing the matrix returned by an inverse function which "supposedly" will be the eye view (camera) of the model if I pass in the modelview matrix but without much success. So are you saying I should set those values to "0" (except the last 1.0) in the last row?
Is jpct matrix row-major or column major? I am not sure if the 4x4 OpenGL matrix returned by Qualcomm is ready to use..
Here is the qualcomm library util function for getting an inverse:
SampleMath::Matrix44FInverse(QCAR::Matrix44F& m)
{
QCAR::Matrix44F r;
float det = 1.0f / Matrix44FDeterminate(m);
r.data
Currently i am testing the matrix returned by an inverse function which "supposedly" will be the eye view (camera) of the model if I pass in the modelview matrix but without much success. So are you saying I should set those values to "0" (except the last 1.0) in the last row?
Is jpct matrix row-major or column major? I am not sure if the 4x4 OpenGL matrix returned by Qualcomm is ready to use..
Here is the qualcomm library util function for getting an inverse:
SampleMath::Matrix44FInverse(QCAR::Matrix44F& m)
{
QCAR::Matrix44F r;
float det = 1.0f / Matrix44FDeterminate(m);
r.data
- = m.data[6]*m.data[11]*m.data[13] - m.data[7]*m.data[10]*m.data[13]
+ m.data[7]*m.data[9]*m.data[14] - m.data[5]*m.data[11]*m.data[14]
- m.data[6]*m.data[9]*m.data[15] + m.data[5]*m.data[10]*m.data[15];
r.data[4] = m.data[3]*m.data[10]*m.data[13] - m.data[2]*m.data[11]*m.data[13]
- m.data[3]*m.data[9]*m.data[14] + m.data[1]*m.data[11]*m.data[14]
+ m.data[2]*m.data[9]*m.data[15] - m.data[1]*m.data[10]*m.data[15];
r.data[8] = m.data[2]*m.data[7]*m.data[13] - m.data[3]*m.data[6]*m.data[13]
+ m.data[3]*m.data[5]*m.data[14] - m.data[1]*m.data[7]*m.data[14]
- m.data[2]*m.data[5]*m.data[15] + m.data[1]*m.data[6]*m.data[15];
r.data[12] = m.data[3]*m.data[6]*m.data[9] - m.data[2]*m.data[7]*m.data[9]
- m.data[3]*m.data[5]*m.data[10] + m.data[1]*m.data[7]*m.data[10]
+ m.data[2]*m.data[5]*m.data[11] - m.data[1]*m.data[6]*m.data[11];
r.data[1] = m.data[7]*m.data[10]*m.data[12] - m.data[6]*m.data[11]*m.data[12]
- m.data[7]*m.data[8]*m.data[14] + m.data[4]*m.data[11]*m.data[14]
+ m.data[6]*m.data[8]*m.data[15] - m.data[4]*m.data[10]*m.data[15];
r.data[5] = m.data[2]*m.data[11]*m.data[12] - m.data[3]*m.data[10]*m.data[12]
+ m.data[3]*m.data[8]*m.data[14] - m.data - *m.data[11]*m.data[14]
- m.data[2]*m.data[8]*m.data[15] + m.data - *m.data[10]*m.data[15];
r.data[9] = m.data[3]*m.data[6]*m.data[12] - m.data[2]*m.data[7]*m.data[12]
- m.data[3]*m.data[4]*m.data[14] + m.data - *m.data[7]*m.data[14]
+ m.data[2]*m.data[4]*m.data[15] - m.data - *m.data[6]*m.data[15];
r.data[13] = m.data[2]*m.data[7]*m.data[8] - m.data[3]*m.data[6]*m.data[8]
+ m.data[3]*m.data[4]*m.data[10] - m.data - *m.data[7]*m.data[10]
- m.data[2]*m.data[4]*m.data[11] + m.data - *m.data[6]*m.data[11];
r.data[2] = m.data[5]*m.data[11]*m.data[12] - m.data[7]*m.data[9]*m.data[12]
+ m.data[7]*m.data[8]*m.data[13] - m.data[4]*m.data[11]*m.data[13]
- m.data[5]*m.data[8]*m.data[15] + m.data[4]*m.data[9]*m.data[15];
r.data[6] = m.data[3]*m.data[9]*m.data[12] - m.data[1]*m.data[11]*m.data[12]
- m.data[3]*m.data[8]*m.data[13] + m.data - *m.data[11]*m.data[13]
+ m.data[1]*m.data[8]*m.data[15] - m.data - *m.data[9]*m.data[15];
r.data[10] = m.data[1]*m.data[7]*m.data[12] - m.data[3]*m.data[5]*m.data[12]
+ m.data[3]*m.data[4]*m.data[13] - m.data - *m.data[7]*m.data[13]
- m.data[1]*m.data[4]*m.data[15] + m.data - *m.data[5]*m.data[15];
r.data[14] = m.data[3]*m.data[5]*m.data[8] - m.data[1]*m.data[7]*m.data[8]
- m.data[3]*m.data[4]*m.data[9] + m.data - *m.data[7]*m.data[9]
+ m.data[1]*m.data[4]*m.data[11] - m.data - *m.data[5]*m.data[11];
r.data[3] = m.data[6]*m.data[9]*m.data[12] - m.data[5]*m.data[10]*m.data[12]
- m.data[6]*m.data[8]*m.data[13] + m.data[4]*m.data[10]*m.data[13]
+ m.data[5]*m.data[8]*m.data[14] - m.data[4]*m.data[9]*m.data[14];
r.data[7] = m.data[1]*m.data[10]*m.data[12] - m.data[2]*m.data[9]*m.data[12]
+ m.data[2]*m.data[8]*m.data[13] - m.data - *m.data[10]*m.data[13]
- m.data[1]*m.data[8]*m.data[14] + m.data - *m.data[9]*m.data[14];
r.data[11] = m.data[2]*m.data[5]*m.data[12] - m.data[1]*m.data[6]*m.data[12]
- m.data[2]*m.data[4]*m.data[13] + m.data - *m.data[6]*m.data[13]
+ m.data[1]*m.data[4]*m.data[14] - m.data - *m.data[5]*m.data[14];
r.data[15] = m.data[1]*m.data[6]*m.data[8] - m.data[2]*m.data[5]*m.data[8]
+ m.data[2]*m.data[4]*m.data[9] - m.data - *m.data[6]*m.data[9]
- m.data[1]*m.data[4]*m.data[10] + m.data - *m.data[5]*m.data[10];
for (int i = 0; i < 16; i++)
r.data *= det;
return r;
}