OpenGL Shader Frage

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenGL Shader Frage

Beitrag von ccode_new »

Warum hatte keiner eine Idee?

Ich habe es hinbekommen.

(Der Quelltext ist geändert. Siehe den dritten Beitrag (von mir) davor. )
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenGL Shader Frage

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenGL Shader Frage

Beitrag 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
???
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenGL Shader Frage

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenGL Shader Frage

Beitrag 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.).
Zuletzt geändert von ccode_new am 11.11.2018 21:31, insgesamt 2-mal geändert.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenGL Shader Frage

Beitrag von ccode_new »

Update!
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: OpenGL Shader Frage

Beitrag von ccode_new »

Warum funktioniert es eigentlich nicht mit dem Qt-Subsytem unter Linux ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten