Lumiere dans une piece [OpenGl] - C++ - Programmation
Marsh Posté le 30-03-2005 à 00:27:28
Et quand tu disable glEnable(GL_BLEND) ca fait quoi ?
EDIT : http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
Regarde le post de retrox il explique pas mal le truc.
Marsh Posté le 30-03-2005 à 13:58:20
Pour ce genre de choses tu devrais utiliser des lightmaps, un éclairage par vertex sur de grandes surfaces planes ne donnera rien de satisfaisant à moins d'utiliser un niveau de tesselation absurde.
Marsh Posté le 30-03-2005 à 00:24:27
J'ai une piece avec 4 murs et je cherche juste à pouvoir mettre des lumieres qui eclairent la piece. Dois-je jouer sur les textures des murs?
La j'utilise une lumiere mais g des gros probleme d'ombre, c tt moche:
void create_light()
{
long var_i = 1;
// set up overall light data, including specular=ambient=light colors
GLfloat light_position[]={ 10.0, 10.0, -10.0, 1.0 };
GLfloat light_color[]={ 1.0, 1.0, 1.0, 1.0 };
GLfloat ambient_color[]={ 0.2, 0.2, 0.2, 1.0 };
GLfloat mat_specular[]={ 1.0, 1.0, 1.0, 1.0 };
glClearColor( 0.0, 0.0, 1.0, 0.0 );
glShadeModel(GL_SMOOTH);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular );
glLightfv(GL_LIGHT0, GL_POSITION, light_position );
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient_color );
glLightfv(GL_LIGHT0, GL_SPECULAR, light_color );
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_color );
glLightModeliv(GL_LIGHT_MODEL_TWO_SIDE, &var_i); // two-sided lighting
// attributes
glEnable(GL_LIGHTING); // so lighting models are used
glEnable(GL_LIGHT0); // we'll use LIGHT0
glEnable(GL_DEPTH_TEST); // allow z-buffer display
glEnable(GL_CLIP_PLANE1); // enable clipping on plane 1
glEnable(GL_BLEND); // enable alpha-channel blending
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
Merci d'avance