Ich frage mich, ob es möglich ist, einen Nebel an den Koordinaten eines Spielers einzurichten (wo Nebel um den Spieler herum ist, um ihn zu einer dritten Person zu machen). Der Hauptgrund, warum ich dies frage, ist, dass ich meinen Spieler mehr in der oberen rechten Ecke von habe der Bildschirm
Hier ist ein Code, der Ihnen eine Anleitung geben kann, was ich tue:
glEnable(GL_FOG) GLfloat FogColor[] = {0.8,0.8,0.8,1.0};
glFogfv(GL_FOG_COLOR,FogColor);
glFogi(GL_FOG_MODE,GL_LINEAR);
glFogf(GL_FOG_START,30);
glFogf(GL_FOG_END,);
glHint(GL_FOG_HINT,GL_NICEST);
und ich möchte, dass der Nebel einem Spieler mit einer Position wie in folgt folgt
posX,posY,posZ
Wenn jemand dies in einen Beispielcode umwandeln kann, wäre das sehr hilfreich, danke
Wenn dies nicht möglich ist, wie würde ich dann den Nebel so einstellen, dass er sich um eine bestimmte Position der Kamera befindet, z. B. in der oberen rechten Ecke der Kamera anstelle der Mitte?
Hier ist ein Bild des Spielbildschirms, damit Sie sehen können, wovon ich spreche:
Verwenden Sie Nebelkoordinaten. http://www.opengl.org/registry/doc/fog_coord.txt
Normalerweise wird der Nebelwert unter Verwendung eines Abstandsfaktors vom Auge zum Pixel 'c' berechnet. Tatsächlich ist die Nebeldichte eine Funktion der Entfernung.
f = exp (-d * c) - GL_EXP2
f = exp (- (d * c) ^ 2) - GL_EXP
f = (ec) / (es) - GL_LINEAR
Mit Nebelkoordinaten können Sie den 'c'-Wert der Gleichung festlegen und Werte direkt dafür angeben. Wenn Sie das Beschlagen so einstellen möchten, dass 0 -> kein Nebel, 1.0 -> der meiste Nebel, dann gehen Sie wie folgt vor:
Verwenden Sie dann beim Rendern Ihrer Person glFogCoordfEXT ()
Bearbeiten: Eine erweiterungslose Alternative besteht darin, den Nebel beim Rendern zu deaktivieren und dann beim Rendern Ihres Charakters den Nebel mit den entsprechenden Start- / Endabständen zu aktivieren.
quelle