2009-03-25 6 views
0
glClear(GL_COLOR_BUFFER_BIT); 
glMatrixMode(GL_MODELVIEW); 

ifstream myFile("Coordinates.txt"); 

if (!myFile.is_open()) 
{ 
    cout << "Unable to open file"; 
    exit(1); // terminate with error 
} 

// Light values and coordinates 
float ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f }; 
float diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f }; 
float specular[] = { 1.0f, 1.0f, 1.0f, 1.0f}; 
float lightPos[] = { 0.0f, -150.0f, -150.0f, 1.0f }; 

glEnable(GL_CULL_FACE); // Do not calculate inside of jet 
glFrontFace(GL_CCW);  // Co unter clock-wise polygons face 

// Enable lighting 
glEnable(GL_LIGHTING); 
// Setup and enable light 0 
glLightfv(GL_LIGHT0,GL_AMBIENT, ambientLight); 
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight); 
glLightfv(GL_LIGHT0,GL_SPECULAR,specular); 
glLightfv(GL_LIGHT0,GL_POSITION,lightPos); 
glEnable(GL_LIGHT0); 

// Light values and coordinates 

float specref[] = { 1.0f, 1.0f, 1.0f, 1.0f }; 

// Enable color tracking 
glEnable(GL_COLOR_MATERIAL); 
// Set Material properties to follow glColor values 
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); 
// All materials hereafter have full specular reflectivity 
// with a high shine 
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR,specref); 
glMateriali(GL_FRONT_AND_BACK,GL_SHININESS,128); 


while (! myFile.eof()) 
{ 
    glPushMatrix(); 
    myFile>>plot[0]; 
    myFile>>plot[1]; 
    myFile>>plot[2]; 
    myFile>>plot[3]; //this data will not be used 

    glColor3f(0.60f/1.5,0.80f/1.5,0.90f/1.5); 

    glTranslatef((plot[0]-1.15)*26, (plot[2]-0.51)*45, (plot[1]-1)*30); 
    glutSolidSphere(2, 12, 12); 
    glLoadIdentity(); 
    glPopMatrix(); 

    axes += 0.00005f; 

} 

glRotatef(axes, 0.0f, 1.0f, 0.0f);  

myFile.close(); 
glFlush(); 
glutSwapBuffers(); 

C'est la première fois que je joue avec l'éclairage. Mon problème est qu'après avoir placé tout le code d'effet de lumière d'un tutoriel, les objets semblent exister seulement dans un plan qui est le plan xy mes données ont coordonné dans tous les xyz et la réflexion semble un peu éteinte .. Quelqu'un peut-il me dire pourquoi et comment y remédier?Problème de lumière et de profondeur dans OpenGL

+0

Je ne vois pas comment vous configurez la matrice PROJECTION. – epatel

+0

matrice de PROJECTION? – noob88

+0

Comme le mentionne Jesse Beder ci-dessous, comment se configure le "viewport"? Comment le code regarde où glMatrixMode (GL_PROJECTION) est appelé ... ou est-ce manquant? Ensuite, vous aurez une matrice de projection par défaut – epatel

Répondre

1

Vous n'avez pas donné suffisamment d'informations. Quelles valeurs sont dans votre fichier? Pourquoi chargez-vous l'intrigue [3] quand elle n'est pas utilisée? Voulez-vous dire que le glutSphere est rendu en tant qu'objet 2d plat dans le plan xy?

Je vous recommande de vous familiariser avec la fonctionnalité de base OpenGL avant d'utiliser l'éclairage intégré, ce problème n'a probablement rien à voir avec l'éclairage. Je ne recommanderais pas non plus d'utiliser l'éclairage intégré de GL pour autre chose que des tests et de minuscules projets de toute façon ... ce n'est pas très flexible et il y a aussi beaucoup de limitations.

+0

plot [3] est de prendre les données de la 4e dimension de ne pas être utilisé ici c'est tout. – noob88