2010-11-20 5 views
1

Je le code suivant dans mon application OpenGL (fonction comme InitGL, exécute au début de l'application):comportement de brouillard incorrect dans OpenGL

GLfloat density = 0.5; 
GLfloat fogColor[4] = {164/255.0,203/255.0,242/255.0, 1}; 

if(OPT_FOG_ENABLED){ 
    glEnable (GL_FOG); 
    glFogi (GL_FOG_MODE, GL_LINEAR); 
    glFogfv (GL_FOG_COLOR, fogColor); 
    glFogf (GL_FOG_DENSITY, density); 
    glFogf(GL_FOG_START, 200); 
    glFogf(GL_FOG_START, 300); 
} 

OPT_FOG_ENABLED est une constante avec une valeur de 1.

Le problème est, im obtenir cette image: http://prntscr.com/177y4 comme vous le voyez, le brouillard commence à partir de l'appareil photo et se dissout à une certaine distance de celui-ci. Ce n'est pas le comportement que vous attendez du brouillard, non? Quel est le problème avec mes paramètres, ou peut-être im faire quelque chose dans le mauvais ordre?

Répondre

5

Je ne sais pas si c'est une faute de frappe dans votre code ... mais vous définissez GL_FOG_START deux fois au lieu de définir le début et la fin.

+1

OMG, j'ai supposé que je suis un idiot, mais vous l'avez prouvé. Merci! :) – Anton

+0

Ne vous inquiétez pas, des choses comme ça arrive, et plus vous regardez votre code, plus il est difficile de voir l'erreur! :) Btw, manuel GLFogf dit que GL_FOG_END par défaut à 1, donc le comportement est correct (brouillard entre 1 et 300). – nico

Questions connexes