Aktuelle Zeit: 18.11.2018 01:07

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: OpenGL Shader Frage
BeitragVerfasst: 06.11.2018 19:32 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Warum hatte keiner eine Idee?

Ich habe es hinbekommen.

(Der Quelltext ist geändert. Siehe den dritten Beitrag (von mir) davor. )


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Shader Frage
BeitragVerfasst: 09.11.2018 18:48 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Seit gegrüßt liebe PureBasic-Gemeinde,

ich habe da mal noch eine Frage. :mrgreen:

Wie könnte ich das PureBasic-Sprite-Management mit ScreenFilter(Shader) nutzen ?

Ich bekomme es bisher nur mit Image-Daten als Texture hin.

Innerhalb der Render-Prozedure habe ich:

Code:
If StartDrawing(ScreenOutput())
    Box(0,0,ScreenWidth(), ScreenHeight(), RGB(255,0,0))
    DrawImage(ImageID(0), x, y, 20, 20)
    GrabDrawingImage(image, 0, 0, ScreenWidth(), ScreenHeight())
    StopDrawing()
    glSpriteTexture = SetupGLTexture(image)
  EndIf


Mit "GrabDrawingImage" möchte ich somit den gesamten Screeninhalt als Bild übergeben.
Das funktioniert auch wunderbar, aber nicht mit Sprites.

Ich habe alles auf Screen umgestellt und innerhalb der "SetupGLTexture(ImageHandle.i)"-Prozedure am Ende ein FreeImage(ImageHandle) hinzugefügt, weil es sonst zu Speicherfehlern kommt.

Also wenn man vorher mit DisplaySprite, ... ein Sprite auf den Screen rendern, und danach als Image dem Shader übergeben möchte, klappt das so noch nicht bei mir.

"GrabDrawingImage" nimmt nur den aktuellen Inhalt des Drawing-Blocks und ignoriert alles davor.

Daher brauche ich eine bessere Lösung.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Shader Frage
BeitragVerfasst: 09.11.2018 20:41 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Huhu!!!

Ich habe mal:

glDeleteShader(shader.l)
glDeleteProgram(Program.l)

hinzugefügt.

Warum wird immer der System\Shader_Program -Zähler erhöht ?

Davor mache ich:

Code:
  If System\Shader_Program <> 0 ;/ delete the previous shaders
    glUseProgram(0)
    glDeleteShader(System\Shader_Vertex)
    glDeleteShader(System\Shader_Fragment)
    glDeleteProgram(System\Shader_Program)
  EndIf


???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Shader Frage
BeitragVerfasst: 09.11.2018 21:45 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Keine Ideen, Vorschläge, etc. ?

Wenn ich "CustomFilterCallback" mit ScreenOutput() nutze scheint das auch erstmal schnell, aber nicht schnell genug.
Am Anfang ist es schnell, aber nach kurzer Zeit beginnt es mit dieser Methode stark zu stocken und die FPS brechen ein.

Mit GPU (Shadern) ist das viel besser.

Daher suche ich eine Lösung dafür.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Shader Frage
BeitragVerfasst: 10.11.2018 22:35 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallöchen!

Ich habe hier mal einen Performance-Test.
(Zwischen Shadern und normalen ScreenOutput-Drawing)

https://workupload.com/file/rwgGeAHw (Update! Auf Stabilität optimiert!)

(Speicherfehler unter Windows wurden behoben.)

Es werden noch weitere Funkionen zur Modifikation kommen.
Außerdem noch mehr Shadereffekte (wie Schnee, Regen, etc)

Ich möchte (werde) mich auch (gerne) mit mehreren Texturen beschäftigen, für verschiedene Ebenen (z.B Schnee im Vordergrund und Hintergrund (vlt. auch Parallax) und Übergangseffekte (für Bildshows, etc.).


Zuletzt geändert von ccode_new am 11.11.2018 21:31, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Shader Frage
BeitragVerfasst: 11.11.2018 21:31 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Update!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Shader Frage
BeitragVerfasst: 11.11.2018 23:36 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Warum funktioniert es eigentlich nicht mit dem Qt-Subsytem unter Linux ?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye