[OpenGL] Problème de création et d'application d'une matrice de texture

Le côté programmation du développement d'un jeu vidéo.

Problème de création et d'application d'une matrice de texture

Messagepar wishtchoco » 23 Juil 2008, 15:35

Salut, j'ai 2 erreurs dans mon programme opengl. Lorsque j'applique ma matrice de texture (ma shadow map) j'ai une texture toute noire...

Deuxièmement, lorsque je regarde depuis le point de vu de ma lumière, j'ai ma vu qui est entouré d'une bordure. J'ai vérifié mes paramètres de viewport et tout me semble correct pourtant.

Pour générer ma texture:

Code: Tout sélectionner
void generateShadowMap( void )
{
    GLint    viewport[4];
    GLfloat  lightPos[4];


    glGetLightfv( GL_LIGHT1, GL_POSITION, lightPos );
    glGetIntegerv( GL_VIEWPORT, viewport );

    glViewport(0 , 0, SHADOW_MAP_WIDTH, SHADOW_MAP_HEIGHT );

    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );


    glMatrixMode( GL_PROJECTION );
    glPushMatrix();
    glLoadIdentity();
    gluPerspective (40, (GLfloat) screen_width / (GLfloat) screen_height, nearPlane,farPlane);
    glMatrixMode( GL_MODELVIEW );
    glPushMatrix();
    glLoadIdentity();
    gluLookAt( lightPos[0], lightPos[1], lightPos[2],
          lookat[0], lookat[1], lookat[2],
          up[0], up[1], up[2] );


    renderScene( GL_TRUE );

    glPopMatrix();
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode( GL_MODELVIEW );

    glCopyTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, 0,
            SHADOW_MAP_WIDTH, SHADOW_MAP_HEIGHT, 0 );

    glViewport( viewport[0], viewport[1], viewport[2], viewport[3] );

    if ( showShadow ) {
      GLfloat depthImage[SHADOW_MAP_WIDTH][SHADOW_MAP_HEIGHT];
      glReadPixels( 0, 0, SHADOW_MAP_WIDTH, SHADOW_MAP_HEIGHT,
          GL_DEPTH_COMPONENT, GL_FLOAT, depthImage );

      glDrawPixels( SHADOW_MAP_WIDTH, SHADOW_MAP_HEIGHT, GL_LUMINANCE,
          GL_FLOAT, depthImage );
      glutSwapBuffers();
    }



Code: Tout sélectionner
void generateTextureMatrix( void )
{
    GLfloat  tmpMatrix[16];

    /*
     *  Set up projective texture matrix.  We use the GL_MODELVIEW matrix
     *    stack and OpenGL matrix commands to make the matrix.
     */

    glPushMatrix();
    glLoadIdentity();
    glTranslatef( 0, 0, 0.0 );
    glScalef( 0.5, 0.5, 1.0 );
    gluPerspective (CAMERA_ANGLE, (GLfloat) screen_width / (GLfloat) screen_height, 0.1,background_radius + 100);
    gluLookAt( light_sea1_position[0], light_sea1_position[1], light_sea1_position[2],
          lookat[0], lookat[1], lookat[2],
          up[0], up[1], up[2] );
    glGetFloatv( GL_MODELVIEW_MATRIX, tmpMatrix );
    glPopMatrix();

    transposeMatrix( tmpMatrix );

    glTexGenfv( GL_S, GL_OBJECT_PLANE, &tmpMatrix[0] );
    glTexGenfv( GL_T, GL_OBJECT_PLANE, &tmpMatrix[4] );
    glTexGenfv( GL_R, GL_OBJECT_PLANE, &tmpMatrix[8] );
    glTexGenfv( GL_Q, GL_OBJECT_PLANE, &tmpMatrix[12] );

}
wishtchoco
Hello World, I'm new !
 
Messages: 32
Inscription: 18 Juil 2008, 10:27

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

cron