Français
Source/ Codesnippets

OpenGL Motion Blur (Accumulation Buffer)

 

Sven
Bader
avec dem Accumulation Buffer laisser sich entier gentille Sachen realisieren, comment zum Beispiel une Bewegungsunschärfe.

L'idée est, dass on plusieurs Frames dans einem zusammenfasst. Gibt es aucun Bewegung, so merkt on keinen Unterschied ansonsten sieht on, comment qui bewegten Objekte Schlieren tirer.

dans meinem Beispiel augmenté sich le nombre qui zusammengefassten Bilder avec qui Geschwindigkeit et es wird zusätzlich encore une kleine Abweichung incorporé, um den effet trop verstärken.

sans Accum Buffer (ou bien Stillstand)



avec Accum Buffer



avec Accum Buffer + Schütteleffekt (dx!, dy!, dz!)


 $H windows.ph
declare xrot!, yrot!, zrot!
declare xpos!, xspeed!, ypos!, yspeed!, zpos!, zspeed!

proc DrawGLScene

    parameters dx!, dy!, dz!
    declare id&
    ogl("glClear",~GL_DEPTH_BUFFER_BIT | ~GL_COLOR_BUFFER_BIT)'ogl("clear") cleared trop viel!
    oGL("Color", 0.7,0.7,0.7,1)
    oGL("Origin", xpos!+dx!*0.1, ypos!+dy!*0.1, zpos!+dz!*0.1)
    oGL("Rotate", xrot!, yrot!, zrot!)
    oGL("Move", 0, -1, 0)
    oGL("Texture", tex&, 1)
    oGL("Cylinder", 1, 1, 2, 24)
    oGL("Texture",tex2&, 8)
    oGL("Origin", 0, -10, -24)
    oGL("Quad", 29, 20)
    xrot! = xrot! + xspeed!
    yrot! = yrot! + yspeed!
    zrot! = zrot! + zspeed!

endproc

proc Redraw

    declare  i%, max!, dx!, dy!, dz!
    dx! =  1.0
    dy! =  1.0
    dz! = -1.0
    ogl("Clear")
    ogl("Push")
    max!  = si(abs(yspeed!) > abs(xspeed!), si(abs(yspeed!) > abs(zspeed!), abs(yspeed!), abs(zspeed!)), abs(xspeed!)) * 0.75
    max!  = round(max!, 0)
    cas max! <= 1 : max! = 1
    cas max! > 10 : max! = 10
    ogl("glClear",~GL_ACCUM_BUFFER_BIT)

    whileloop 0,  max!-1

        DrawGLScene(dx! * &loop, dy! * &loop, dz! * &loop)
        ogl("glAccum",~GL_ACCUM, 1.0 / max!)

    endwhile

    ogl("glAccum",~GL_RETURN, 1.0)
    ogl("Pop")
    ~SwapBuffers(%hDC)'Ersetzt show!!

endproc

' Hauptprogramm
' -------------
declare hWnd&, ende%, hpic&,tex&,tex2&
CLS 0
oGL("Init", %hWnd, 1, 1, 1, 0)
'Texture aus Icônes
Mcls 32,32
startpaint -1
DrawIcon "A", 0,0
endpaint
hPic&=create(«PCSI»,0,"& MEMBMP")
tex&=ogl("getTextureBmp",hPic&,1)
DeleteObject hPic&
'Texture aus Icônes
startpaint -1
DrawIcon "KNOPF1", 0,0
endpaint
hPic&=create(«PCSI»,0,"& MEMBMP")
tex2&=ogl("getTextureBmp",hPic&,1)
DeleteObject hPic&
xpos! = 0
ypos! = 0
zpos! = -5
xrot! = 35
yrot! = 55
zrot! = 0
xspeed! = 0
yspeed! = 0
zspeed! = 0
Ende% = 0
setTimer 10' max. 50 Frames /sek.

WhileNot ende%

    WaitInput

    Si IsKey(27)

        Ende% = 1

    ElseIf Iskey(39)

        yspeed! = yspeed! + .02

    ElseIf Iskey(37)

        yspeed! = yspeed! - .02

    ElseIf Iskey(40)

        xspeed! = xspeed! + .02

    ElseIf Iskey(38)

        xspeed! = xspeed! - .02

    ElseIf Iskey(33)

        zpos! = zpos! - .1

    ElseIf Iskey(65)

        xpos! = xpos! - .1

    ElseIf Iskey(68)

        xpos! = xpos! + .1

    elseIf Iskey(83)

        ypos! = ypos! - .1

    ElseIf Iskey(87)

        ypos! = ypos! + .1

    ElseIf Iskey(34)

        zpos! = zpos! + .1

    EndIf

    redraw()

Endwhile

killTimer
end

1.png  
41 kB
Hochgeladen:14.10.2021
Downloadcounter71
Download
2.png  
67 kB
Hochgeladen:14.10.2021
Downloadcounter58
Download
3.png  
55 kB
Hochgeladen:14.10.2021
Downloadcounter67
Download
 
14.10.2021  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

1.606 Views

Untitledvor 0 min.
Sven Bader01.03.2023
Ernst29.05.2022
ByteAttack20.05.2022
Michael W.30.03.2022
plus...

Themeninformationen

cet Thema hat 1 participant:

Sven Bader (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie