C++ OpenGL Beleuchtungsfehler von Textur

F

Furtano

Gast
Hallo,

ich habe massive Beleuchtungsfehler? bei meinem Spiel Schiffe versenken.
Mich stört die flackernde Wassertextur, das sieht man in dem Video (zweite Hälfte).

http://www.youtube.com/watch?v=xeS-RYFeGGo&feature=youtu.be

Wisst ihr woran das liegt?

Teil der main.cpp

PHP:
void init(void) 
{   // Zufallszeit 
    srand (time(NULL));
	glEnable(GL_CULL_FACE);


	//Ship chris(5);
	//chris.setIsEnemy(true);
	//cout << chris.getIsEnemy();


   GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
   GLfloat mat_shininess[] = { 1.0 };

   
   // LICHT 1
   GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
   GLfloat light_ambient[] = {1, 1, 1, 1 }; // Farbe
    // LICHT 2
   GLfloat light_position2[] = { 1.0, -6.0, 10.0, 0.0 };
   GLfloat light_ambient2[] = {1, 1, 1, 1 }; // Farbe
      // LICHT 3
   GLfloat light_position3[] = { 1.0, -16.0, 10.0, 0.0 };
   GLfloat light_ambient3[] = {0.1, 0.1, 0.1, 0.1 }; // Farbe
	
   glClearColor (0.0, 0.0, 0.0, 0.0);
   glShadeModel (GL_SMOOTH);
   glEnable(GL_DEPTH_TEST);


  

   
   glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
   glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
   
   // Beleuchtung
   glLightfv(GL_LIGHT1, GL_DIFFUSE, light_ambient);
   glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
   glLightfv(GL_LIGHT1, GL_POSITION, light_position);


    // Beleuchtung
   glLightfv(GL_LIGHT3, GL_DIFFUSE, light_ambient3);
   glLightfv(GL_LIGHT3, GL_AMBIENT, light_ambient3);
   glLightfv(GL_LIGHT3, GL_POSITION, light_position3);
   // Beleuchtung
   glLightfv(GL_LIGHT2, GL_DIFFUSE, light_ambient2);
   glLightfv(GL_LIGHT2, GL_POSITION, light_position2);

   glEnable(GL_LIGHTING);
   glEnable(GL_NORMALIZE); // Normalisierung
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_LIGHT1);
   glEnable(GL_LIGHT2);
   glEnable(GL_LIGHT3);

   /**
   SCHIFFSMODELLE
   **/
   schiff10modell.Load("models/textured.3ds");
   schiff20modell.Load("models/kreuzer.3ds");
   schiff30modell.Load("models/zerstoerer.3ds");
   schiff40modell.Load("models/uboot.3ds");

   waterPlate = glmReadOBJ("models/wasser.obj");
   waterTexture = gltxReadRGB("models/wassertextur.rgb");

   // wie ist die Textur im Speicher organisiert (Zeilen)
   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

   // opengl generiert einen Namen für die Textur und speichert sie 
	// in der Variablen 'texname'
   glGenTextures(6, texName);

   //  Textur setzen / binden
   glBindTexture(GL_TEXTURE_2D, texName[0]);

   // textureigenschaften festlegen

   // Textur in S = x-Richtung wiederholen
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
   // Textur in T = y-Richtung wiederholen
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	// Interpolation für Pixelvergrößerung festlegen
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
   // Interpolation für Pixelvergrkleinerung festlegen
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	
   // Textur setzen
   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, waterTexture->width, waterTexture->height, 
                0, GL_RGB, GL_UNSIGNED_BYTE, waterTexture->data);

   schiffeGegner = gegner.placeShipsRandomly(feldGegner);
   cout << "\nGEGNERPOSITIONEN ZUM CHEATEN :)";
   feldGegner.debugPrintField();

}
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben