Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??
Autor: Sven Bader (---.versanet.de)
Datum:   06.09.21 13:48

Hallo Markus,
falls es für dich noch relevant ist, hier ein funktionierender Code.
Ich habe die Frames zwischen den Bildwechseln berchnet sodass ich mit einem einfachen Modulo arbeiten kann. Dann stoppt die Rotation per if/elseif und die Animation des gewünschten Bildes erfolgt.

Etwas vorsichtig musst du sein bei einer evnetuellen Framerate Anpassung, da zumindest die "Physik" nun darauf angewiesen ist, dass du keinen Frame auslässt.

  Declare fps%, tmr&, frm%, rT!, xFps&, yFps&, x&, y&, count&,x!,y!,z!,pics%,step!,frame&,framesperpic&,zoom&,animate%
  
 
  CLS
  oGL("Init", %hWnd, 0, 0, 0, 0)
  Set("oGLDepth", 512)
  oGL("PosMode", 1)
  xFps& = create("Font", "Curier", 12, 0, 0, 0, 0)
  yFps& = oGL("OutlineFont", xFps&, 0.0)
  DeleteObject xFps&, yFps&
  pics% = 30
  framesperpic& = 10 
  step! = 2*Pi()/ pics% * (1/framesperpic&)
  zoom& = -1
  
  SetTimer 20
  While 1
    
    If &GetTickCount - tmr& >= 1000
      fps% = frm%
      tmr& = &GetTickCount
      frm% = 0
    EndIf
    
    if zoom& = -1
      'nur drehen, wenn gerade kein Bild gezoomt wird
      inc frame&
      rT! = rT! + step! : If rT! >=(Pi()*2): rT! = 0.0 : EndIf
    endif
    oGL("Clear")
    oGL("Origin", 50, 40, -100)
    oGL("Print", yFps&, str$(y&))
    oGL("Fog", 2, 0.04, 0)
    oGL("BlendMode",2)
    oGL("Origin", 0, 0, -30)
    For x&,0,pics%-1
    oGL("push")
      
      oGL("Texture", 0, 1)
      
      x! = 10.1*sin(rT!+(x&*(2*Pi()/pics%)))
      if (x& = zoom&)
        inc animate%
        z! = 17*cos(rT!+(x&*(2*Pi()/pics%))) + (sin(animate%*(Pi()*0.01)) * 11)
      else
        z! = 17*cos(rT!+(x&*(2*Pi()/pics%)))
      endif
      
      oGL("Move", x! , 0, z!)
      oGL("Quad", 1.6, 1)
    oGL("pop")
 
    
  EndFor
     
    if (animate% = 100)
      animate% = 0
      zoom& = -1
    elseif (zoom& = -1) AND (frame& MOD framesperpic& = 0)
      inc y& : if y& = pics% : y& = 0 : EndIf
      zoom& = pics% -y&
    endif
  
  
  oGL("Show")
  
  If IsKey(27)
    End
  EndIf
 EndWhile
 KillTimer
 End
 
 
 



Grüße
Sven

 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Markus Barkholz 14.07.21 20:02 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Heinz Brill 15.07.21 08:19 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Markus Barkholz 15.07.21 20:09 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Heinz Brill 16.07.21 07:06 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Markus Barkholz 02.08.21 21:17 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Heinz Brill 03.08.21 07:25 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Markus Barkholz 06.08.21 22:12 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Heinz Brill 07.08.21 07:24 
 Re: Hat jemand eine elegantere Lösung zu diesem oGL-Thema??  Neu
Sven Bader 06.09.21 13:48 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org