2009-03-25 7 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(); 

Dies ist mein 1. Mal mit Beleuchtung spielen.Problem mit Licht und Tiefe in OpenGL

Mein Problem ist, dass, nachdem ich den ganzen Lichteffektcode aus einem Tutorial platziert habe, die Objekte nur in einer Ebene existieren, die die xy-Ebene ist, die meine Daten in allen xyz koordiniert haben und die Reflexion scheint ein wenig aus.

kann mir jemand sagen, warum und wie es zu beheben?

+0

Ich sehe nicht, wie Sie die PROJECTION-Matrix einrichten. – epatel

+0

PROJECTION-Matrix? – noob88

+0

Wie Jesse Beder unten erwähnt, wie ist das "Ansichtsfenster" eingerichtet? Wie sieht der Code aus, wo glMatrixMode (GL_PROJECTION) aufgerufen wird ... oder fehlt das? Dann haben Sie eine Standard-Projektionsmatrix – epatel

Antwort

1

Look-sehen Sie nicht genügend Informationen gegeben haben. Welche Werte befinden sich in Ihrer Datei? Warum laden Sie das Diagramm [3], wenn es nicht verwendet wird? Meinst du, dass die GlutSphere als flaches 2D-Objekt in der xy-Ebene rendert?

Ich würde Ihnen empfehlen, sich mit der Kern-OpenGL-Funktionalität vertraut zu machen, bevor Sie die eingebaute Beleuchtung verwenden, dieses Problem hat wahrscheinlich nichts mit Beleuchtung zu tun. Ich würde auch nicht empfehlen, die eingebaute Beleuchtung von GL für irgendetwas anderes als das Testen und kleine Projekte zu verwenden ... es ist nicht sehr flexibel und hat auch viele Einschränkungen.

+0

plot [3] ist die 4 dimension daten zu nehmen es ist nicht hier zu verwenden das ist alles. – noob88