2016-11-23 1 views
-1

Also bin ich fast fertig mit meinem kleinen Programm. Das Problem ist, dass das Spiel sollte wie folgt aussehen:OpenGL + VC++ - Beleuchtung zufällig in Release-Konfiguration durcheinander

Bright game

... aber es sieht manchmal so aus:

Dim game

Dies geschieht nie in Debug-Konfiguration, nur in Release. Ich verwende VS 2015

ich meine Lichter so zusammen:

GLfloat lightPos[] = { 0, 20, 0 }; 
glEnable(GL_NORMALIZE); 
glLightfv(GL_LIGHT0, GL_POSITION, lightPos); 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 

Der Ball und das Spielfeld befinden sich in (0, 0, 0) und (0, -1, 0), beziehungsweise. Weiß jemand, was das verursacht? Behält das Spiel etwas vom letzten Lauf bei, der mit den Einstellungen verwechselt wird?

Das ganze Projekt ist jetzt ziemlich groß, also habe ich nicht den ganzen Code eingeschlossen, aber ich kann mehr Informationen zur Verfügung stellen, wenn Sie es brauchen.

+0

Für die Zukunft: isolieren Sie einen [minimalen vollständigen Teil des Codes, der das Problem reproduziert] (http://stackoverflow.com/help/mcve) und posten Sie es. Beenden Sie außerdem die Verwendung der veralteten Legacy-API für feste Funktionen, und wechseln Sie in die moderne programmierbare OpenGL-Pipeline. – ybungalobill

Antwort

0

GL_POSITION bekommen homogene Koordinaten, so soll es sein:

GLfloat lightPos[] = { 0, 20, 0, 1 }; 

oder

GLfloat lightPos[] = { 0, 20, 0, 0 }; 

je nachdem, ob Sie einen Punkt Licht oder ein gerichtetes Licht wollen.

+0

Das Problem scheint gelöst zu sein, indem das Licht als Punktlicht eingestellt wird, d. H. Die letzte Koordinate ist "1". – mkkekkonen

Verwandte Themen