2008-11-27 5 views
2

Mon but: - affichage zone de chevauchement avec tout le satellite de droite à gauche ou de l'image aérienneOpenGL stéréo 3D de visualisation pour l'image stéréo aérienne (gauche, images droite)

 - rotate image using roll, pitch yaw angles 
     -image format is Tiff image 

Maintenant, je fais OpengGL stéréo 3D de visualisation pour antenne image stéréo (paire stéréo gauche, droite). J'ai montré mon image de droite à gauche en utilisant le code suivant:

glDrawBuffer (GL_BACK_LEFT); 
LeftBuf = new unsigned char [LeftCol * LeftRow *3]; 

for (int i = 0; i < LeftRow; i++){ 
    for (int j = 0; j< LeftCol; j++){ 

     LeftBuf [(i*LeftCol + j)*3] = tiff.LnBuf [i*LeftCol + LeftCol-(j-1)]; 
     LeftBuf [(i*LeftCol + j)*3+1] = tiff.LnBuf [i*LeftCol + LeftCol-(j-1)]; 
     LeftBuf [(i*LeftCol + j)*3+2] = tiff.LnBuf [i*LeftCol + LeftCol-(j-1)]; 

    } 
} 

glRasterPos2f(-1,-1); 
glDrawPixels(LeftCol, LeftRow, GL_RGB, GL_UNSIGNED_BYTE, LeftBuf); 

glDrawBuffer (GL_BACK_RIGHT); 
RightBuf = new unsigned char [RightCol *RightRow *3]; 

for (int r = 0; r < RightRow; r++){ 
    for (int c = 0; c< RightCol; c++){ 

     RightBuf [(r*RightCol + c)*3] = tiff.RnBuf [r*RightCol + RightCol-(c-1)]; 
     RightBuf [(r*RightCol + c)*3+1] = tiff.RnBuf [r*RightCol + RightCol-(c-1)]; 
     RightBuf [(r*RightCol + c)*3+2] = tiff.RnBuf [r*RightCol + RightCol-(c-1)]; 

    } 
} 

glRasterPos2f(-1,-0.45); 
glDrawPixels(RightCol, RightRow, GL_RGB, GL_UNSIGNED_BYTE, RightBuf); 

maintenant je dois tourner mon image 3D droite à l'aide Opengl fonction suivante: glRotatef (rightphoto.omega * 180/PI, 1.0f, 0.0f, 0.0f) Glutotatef (rightphoto.phi * 180/PI, 0,0f, 1,0f, 0,0f); Glutotatef (rightphoto.kappa * 180/PI, 0,0f, 0,0f, 1,0f); mais je ne peux pas faire pivoter mon image.

S'il vous plaît aidez-moi comment faire pivoter mon image !!!!! Aussi je veux afficher des images entières superposées gauche de la même partie des images de gauche à droite avec rotation 3D. Je ne sais pas comment calculer les coordonnées de chevauchement des régions d'images entières de gauche à droite. Désolé pour mon mauvais anglais.

Répondre

4

Les pixels lus ou écrits à l'aide de glDrawPixels() ne sont pas transformés par la matrice de vue de modèle, qui est la modification de glRotatef(). Ce sont des pixels, une primitive de plus bas niveau que les modèles actuels.

Pour résoudre ce problème, envisagez de dessiner votre contenu à l'aide, par exemple, de votre contenu. une primitive mappée en texture telle qu'un quadruple.

Questions connexes