Page 1 of 1

OpenGL & glGetDoublev & glLoadMatrixD

Posted: Fri Dec 06, 2013 9:16 pm
by AmiDARK
Hello.

I'd likt to know if the OpenGL functions glGetDoublev & glLoadMatrixD work in actual MiniGL ?

The reason. Now that I have updated the AmiDARK Engine to use them ... nothing display on screen ... However I'm sure I've not done something wrong.

It's quite simple.
I create *initial* backup just after I've opened my MiniGL display using this :

Code: Select all

    glGetDoublev( GL_PROJECTION_MATRIX, Core.SystemProjection );
    glGetDoublev( GL_TEXTURE_MATRIX, Core.SystemTexture );
    glGetDoublev( GL_MODELVIEW_MATRIX, Core.SystemModelView );
Core.SystemProjection, SystemTExture & SystemModelView are defined like follow :

Code: Select all

struct CoreStruct{
...
  double SystemTexture[ 16 ];
  double SystemModelView[ 16 ];
  double SystemProjection[ 16 ];
...
 }
And then when I setup 2D, I do this :

Code: Select all

void GLSet2DRenderMode( void ){
  if ( Core.CurrentDisplayMode != 2 ){
    glMatrixMode( GL_PROJECTION );
    glLoadMatrixd( Core.Default2DProjection );
    glViewport( 0, 0, deGetDisplayWidth(), deGetDisplayHeight() );
    glOrtho( 0, (GLdouble)deGetDisplayWidth() -1, 0, (GLdouble)deGetDisplayHeight() -1, -1, 1 );
    glRasterPos2i( 0, 0 );
    glMatrixMode( GL_TEXTURE );
    glLoadMatrixd( Core.Default2DTexture );
    glMatrixMode( GL_MODELVIEW );
    glLoadMatrixd( Core.Default2DModelView );
    // Extra OpenGL options à définir pour la 2D.
    glDisable( GL_LIGHTING );
    glDisable( GL_DEPTH_TEST );
    // Set Mode 2
    Core.CurrentDisplayMode = 2;
   }
 }
Same for 3D rendering :

Code: Select all

void GLSet3DRenderMode( void ){
  if ( Core.CurrentDisplayMode != 1 ){
    glMatrixMode( GL_PROJECTION );
    glLoadMatrixd( Core.Default3DProjection );
    glViewport( 0, 0, deGetDisplayWidth(), deGetDisplayHeight() );
    gluPerspective( 60.0, ( (float) deGetDisplayWidth() / (float) deGetDisplayHeight() ), 2.0f, 3000.0f );
    glMatrixMode( GL_TEXTURE );
    glLoadMatrixd( Core.Default3DTexture );
    glMatrixMode( GL_MODELVIEW );
    glLoadMatrixd( Core.Default3DModelView );
    // Set Mode 1
    Core.CurrentDisplayMode = 1;
   }
 }
Is there something wrong in what I do ?

The result is that I get a blanking screen (flash between 2 colors, white & grey)..

Regards,

Re: OpenGL & glGetDoublev & glLoadMatrixD

Posted: Sat Dec 07, 2013 10:24 pm
by AmiDARK
I've made some more tests.
I check if function glLoadMatrixf & glGetFloatv work and apprently they work perfectly/
Here is the test :

Code: Select all

  // Test for Core Matrixes Load/Save
  int iLoop = 0;
  Core.CameraTexture[ 0 ] = 0.0f;
  Core.CameraTexture[ 1 ] = 1.0f;
  Core.CameraTexture[ 2 ] = 2.0f;
  Core.CameraTexture[ 3 ] = 3.0f;
  Core.CameraTexture[ 4 ] = 4.0f;
  Core.CameraTexture[ 5 ] = 5.0f;
  Core.CameraTexture[ 6 ] = 6.0f;
  Core.CameraTexture[ 7 ] = 7.0f;
  Core.CameraTexture[ 8 ] = 8.0f;
  Core.CameraTexture[ 9 ] = 9.0f;
  Core.CameraTexture[ 10 ] = 10.0f;
  Core.CameraTexture[ 11 ] = 11.0f;
  Core.CameraTexture[ 12 ] = 12.0f;
  Core.CameraTexture[ 13 ] = 13.0f;
  Core.CameraTexture[ 14 ] = 14.0f;
  Core.CameraTexture[ 15 ] = 15.0f;
  glMatrixMode( GL_TEXTURE );
  glLoadMatrixf( Core.CameraTexture );
  for( iLoop = 0; iLoop < 16; iLoop++ ){
    Core.CameraTexture[ iLoop ] = 0.0f;
   }
  glGetFloatv( GL_TEXTURE_MATRIX, Core.CameraTexture );
  printf( "Test Matrix Load/Get\n" );
  printf( "%f / %f / %f / %f \n", Core.CameraTexture[ 0 ], Core.CameraTexture[ 1 ], Core.CameraTexture[ 2 ], Core.CameraTexture[ 3 ] );
  printf( "%f / %f / %f / %f \n", Core.CameraTexture[ 4 ], Core.CameraTexture[ 5 ], Core.CameraTexture[ 6 ], Core.CameraTexture[ 7 ] );
  printf( "%f / %f / %f / %f \n", Core.CameraTexture[ 8 ], Core.CameraTexture[ 9 ], Core.CameraTexture[ 10 ], Core.CameraTexture[ 11 ] );
  printf( "%f / %f / %f / %f \n", Core.CameraTexture[ 12 ], Core.CameraTexture[ 13 ], Core.CameraTexture[ 14 ], Core.CameraTexture[ 15 ] );
  // Fin du test.
This code set a matrix with specific values ... Insert the matrix into MiniGL ... Reset my data to 0 and save back the MiniGL matrix inside mu data...
With this I print my data and it showed me the good result.
That mean that glGetFloatv & glLoadMatrixf works perfectly :)
My problem must be somewhere else.

Kindest Regards,
AmiDARK