Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum: 15.07.21 08:19
Ich habe jetzt zwar nicht viel Ahnung von OGL, aber evtl.
könnte man das doch etwas umorganisieren. Wie ich das
sehe, wird in der Schleife jedesmal neu gezeichnet.
Mein Vorschlag wäre :
Die Quads in einer Liste zu zeichnen -> OGL("StartList", N) ... OGL("EndList")
und dann mit OGL("DrawList", N ) auf den Bildschirm bringen.
Dann mit oGL("Rotate", WX, WY, WZ) das Koordinatensystem
rotieren lassen. Das wäre weniger Rechnerei mit den Koordinaten.
Oder so ähnlich, wie in dem Beispiel mit mit den Planeten in den
mitgelieferten Demos.
Ich denke, daß es dann auch nicht mehr ruckelt.
Hier noch was zum Anschauen :
https://xprofan.net/intl/de/quelltexte/album-ogl/
oder sowas :
declare st%, btn1%, btn2%, btn3%
declare rtri!, rquad!
proc DrawGLScene
oGL("Clear")
oGL("Origin", 0, 0, -6)
oGL("Color", 1, 0, 0, 1)
oGL("Rotate", 0, rtri!, 0)
oGL("Rotate", rquad!, 0, 0)
oGL("Quad", 2, 3)
oGL("Show")
rtri! = rtri! + 9
rquad! = rquad! - 5
endproc
' Hauptprogramm
' -------------
declare ende%
Window 600, 400
st% = @Create("Static", %HWnd, 300, 50, 200, 100)
btn1% = @Create("Button", %HWnd, "Start", 10, 10, 60, 25)
btn2% = @Create("Button", %HWnd, "Stop", 80, 10, 60, 25)
btn3% = @Create("Button", %Hwnd, "Ende", 150, 10, 60, 25)
oGL("Init", st%, 0, 0, 0, 0)
oGL("PosMode", 1)
ende% = 0
setTimer 50 ' max 50 Frames /sek.
WhileNot ende%
WaitInput
if isKey(27)
ende% = 1
endif
If @Clicked(btn1%)
ShowWindow(st%, 1)
ElseIf @Clicked(btn2%)
ShowWindow(st%, 0)
ElseIf @Clicked(btn3%)
ende% = 1
EndIf
Case %Key = 2 : ende% = 1
DrawGLScene()
EndWhile
killTimer
end
H.Brill
XProfan X4 + FreeProfan
Nachricht bearbeitet (15.07.21 09:48)
|
|