Seite 2 von 2

Re: OpenGL Shader Frage

Verfasst: 06.11.2018 19:32
von ccode_new
Warum hatte keiner eine Idee?

Ich habe es hinbekommen.

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

Re: OpenGL Shader Frage

Verfasst: 09.11.2018 18:48
von ccode_new
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: Alles auswählen

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.

Re: OpenGL Shader Frage

Verfasst: 09.11.2018 20:41
von ccode_new
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: Alles auswählen

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

Re: OpenGL Shader Frage

Verfasst: 09.11.2018 21:45
von ccode_new
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.

Re: OpenGL Shader Frage

Verfasst: 10.11.2018 22:35
von ccode_new
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.).

Re: OpenGL Shader Frage

Verfasst: 11.11.2018 21:31
von ccode_new
Update!

Re: OpenGL Shader Frage

Verfasst: 11.11.2018 23:36
von ccode_new
Warum funktioniert es eigentlich nicht mit dem Qt-Subsytem unter Linux ?