Hallo,
Ich hätte mal eine Frage wegen dem Koordinatensystem von OGL.
Da wird ja etwas anders gerechnet als in Pixeln, wie im normalen
Grafikmodus. Beispiel :
Wie kommt denn die -6 zustande ? Auch die Kommawerte verstehe ich nicht.
Wie muß man sich das genau vorstellen ? In der Hilfe ist das nicht so
ersichtlich.
Zum Problem selbst :
Ich will drei weiße Bälle von links nach rechts rollen lassen. Es soll auch
ziemlich realistisch aussehen.
Proc DrawGLSceneoGL("CLear")oGL("Color", 0, 0, 0, 1)oGL("Origin", 1.5, -0.5, -7)oGL("Draw", kugel#)oGL("Show")EndProc
Declare ende%, kugel#
Cls 0
oGL("Init", %HWnd, 0, 0, 0, 1)kugel# = New(oglSprite)
With kugel# .typ$ = "sphere" .posx! = -5 .posy! = -2 .posz! = 0 .roty! = 0 .rotdy! = 1 .colorr! = 1 .colorg! = 1 .colorb! = 1 .alpha! = 1 .textur& = 0 .texturm!= 1 .dtick& = 10 .x! = 0.5 .a! = 32 .b! = 32EndWithende% = 0SetTimer 10WhileNot ende% WaitInput If Iskey(27) ende% = 1 EndIf Case %Key = 2 : ende% = 1 If kugel#.posx! < 2.0 kugel#.posx! = kugel#.posx! + 1 Sleep 300 EndIf DrawGLScene()EndWhileKillTimer
End
So gefällt es mir noch nicht richtig. Die sehen auch irgendwie
etwas unförmig aus. Oder sollte man das lieber mit einer
Liste machen (oGL("StartList", N)) ? Das scheint ja sowas
ähnliches zu sein, wie früher ein Makrorekorder, der alle
Aktionen aufgezeichnet hat und den man dann beliebig
oft abspielen lassen konnte ?
Wie kann man das am besten lösen ?
PS: Wie sieht es wie im obigen Code zu sehen, mit dem
Timer aus ? Den kann ich ja sonst nicht mehr verwenden,
da es ja in XProfan nur einen gibt. Bleibt nur noch die
Möglichkeit einen oder mehrere Timer mit der API zu
erstellen (so wie es in der Hilfe steht).
Da Roland ja schon die Grundstrukturen, wie .typ$, posx!
usw. in OGL gelegt hat, hätte er auch noch einen API-Timer
implementieren können, den man mit z.B. .timer% in der
Struktur einstellen kann. Wenn dieser mit einem gültigen
Wert belegt ist, kann er ja erstellt und benutzt werden.
Somit könnte der Anfänger mit SetTimer usw. andere Sachen
erledigen.