Hello,
I have solid lighting bug in my battleship game.
What bothers me the flickering water textures that you see in the video (second half).
http://www.youtube.com/watch?feature=player_embedded&v=xeS-RYFeGGo
Do you know why its flickering?
part of main.cpp
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 << "
GEGNERPOSITIONEN ZUM CHEATEN :)";
feldGegner.debugPrintField();
}
[/b]
[/b]