Variable wird Müll in Schleife?
-
Abend,
ich stehe gerade vor einem totalen Rätsel. Ich habe folgende Schleife:
float t=0; for(uint i=0; i < iterations; i++, t += mHeightmap.getScaleXZ() * 10) { samplePoint = ray.getPoint(t); heightTerrain = mHeightmap.sampleHeight(isInsideHeightmap, samplePoint.x, samplePoint.z); if(!isInsideHeightmap) { return false; } if(heightTerrain > samplePoint.y) { float t1 = t - mHeightmap.getScaleXZ(); ...Es geht um die Variable t, die außerhalb der Schleife definiert wird. Es passiert beim Ablauf meines Codes jetzt folgendes: t wird in jedem Durchlauf erhöht (siehe Schleifenkopf) und irgendwann ist dann heightTerrain > samplePoint.y erfüllt und er geht in den if-Zweig. Sobald er in den Zweig geht, steht in t totaler Müll! Ich bin im Debugger durchgegangen und da sah es so aus: t ist gerade 1100, jetzt geht er in den if zweig if(heightTerrain > samplePoint.y)und t springt auf den Wert -1.0737418e+008! Wie kann das sein?

-
hast d noch ein t im if?
-
Auf den ersten Blick habe ich nichts gesehen, und auf den zweiten sehe ich auch nichts. Hast du den operator > für den Typen des Objekts heightTerrain überladen und dabei einen Seiteneffekt nicht berücksichtigt? Was gibt denn mHeightmap.getScaleXZ(); in Zeile 14 zurück?
-
wie sieht es mit der Signatur von ray.getPoint aus?
wo werden die anderen Variablen definiert?
Wie sieht die vollständige Schleife aus?
Welcher Assembler Code wird dazu generiert?