Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FFT Grid Vis (https://www.delphipraxis.net/178238-fft-grid-vis.html)

Aphton 25. Dez 2013 20:23


FFT Grid Vis
 
Liste der Anhänge anzeigen (Anzahl: 4)
Da ich unter chronischer Langeweile leide und öfters einfach so vor mich dahinprogrammiere... ist diesmal komischerweise etwas -zumindest für mich- interessanteres dabei rausgekommen.

Es handelt sich hier um eine Musik-Visualisierung.
Ich greife per BASS Bibliothek FFT Daten vom ausgewählten & abgespielten Stück ab und visualisiere sie per OpenGL als Cubes in 2D-Gitteranordnung.
Es ist ne hübsche kleine technische Spielerei. Nichts seriöses oder etwas, woran ich weiterentwicklen werde!

EWeiss 26. Dez 2013 07:41

AW: FFT Grid Vis
 
Zitat:

Zitat von Aphton (Beitrag 1241035)
Da ich unter chronischer Langeweile leide und öfters einfach so vor mich dahinprogrammiere... ist diesmal komischerweise etwas -zumindest für mich- interessanteres dabei rausgekommen.

Es handelt sich hier um eine Musik-Visualisierung.
Ich greife per BASS Bibliothek FFT Daten vom ausgewählten & abgespielten Stück ab und visualisiere sie per OpenGL als Cubes in 2D-Gitteranordnung.
Es ist ne hübsche kleine technische Spielerei. Nichts seriöses oder etwas, woran ich weiterentwicklen werde!

Das gibt es doch auf Sullaco
Sieht aber gut aus ;)

Was sind das alles für Weiße Streifen an den Desktop rändern mit man mit dem teil über diese Hinausfährt?

Zitat:

Nichts seriöses oder etwas, woran ich weiterentwicklen werde!
Dann mach doch Open Source wenn es dir beliebt.
Könnte es dann wenn ich mal zeit übrig habe oder Langeweile so wie du ein Winamp Plugin daraus erstellen.

gruss

Aphton 26. Dez 2013 10:31

AW: FFT Grid Vis
 
Ich wusste nicht, dass es das auf Sulaco gibt ^^
Danke fürs Kompliment.

Die weißen Streifen sind mir auch aufgefallen - die sieht man beim Draggen an den Desktoprändern. Bin mir nicht sicher, hat aber evt. etwas damit zu tun, dass ich das ganze Zeugs auf eine Bitmap rendere und dann von der Bitmap aufs Formular blitte, damit das mit der Transparenz hinhaut!

OpenSource.. hmm.. Der Code ist eig. gar nicht reif dafür - wenn du nur wüsstest, wie hässlich der ist =/

EWeiss 26. Dez 2013 11:45

AW: FFT Grid Vis
 
Zitat:

Zitat von Aphton (Beitrag 1241077)
Ich wusste nicht, dass es das auf Sulaco gibt ^^
Danke fürs Kompliment.

Die weißen Streifen sind mir auch aufgefallen - die sieht man beim Draggen an den Desktoprändern. Bin mir nicht sicher, hat aber evt. etwas damit zu tun, dass ich das ganze Zeugs auf eine Bitmap rendere und dann von der Bitmap aufs Formular blitte, damit das mit der Transparenz hinhaut!

OpenSource.. hmm.. Der Code ist eig. gar nicht reif dafür - wenn du nur wüsstest, wie hässlich der ist =/ Ich überlegs mir, wenn die Nachfrage größer wird, säubere ich und lads hoch!

Warum tust du das ?
Du könntest ja einfach den window style des Fenster auf WS_EX_LAYERED setzen
dann wäre die Vis (Window)auch Transparent oder ?
Das extra rendern auf das Bitmap könntest du dir dann sparen.

Du kannst aber auch die Transparenz emulieren
in dem du glOrtho verwendest und den Hintergrund in eine Texture kopierst.
Das mache ich in meinem KaraGL Projekt so ;)

Delphi-Quellcode:
procedure renderBackground();
begin
  // Farben auf Default werte setzen
  glColor3f(1.0, 1.0, 1.0);
  // BackTexture aktivieren
  glEnable(GL_TEXTURE_2D);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  //Matrix zeichnen
  gluOrtho2D(0.0, panOpenGL.Width, panOpenGL.Height, 0.0);
  //Matrix anzeigen
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  //Aktuelle Transformation speichern
  glPushMatrix;
    // Backtexture einbinden
    glBindTexture(gl_Texture_2D, BackTexture);
    // Hintergrund Quadrat zeichnen
    glBegin(GL_QUADS);
      glTexCoord2d(0.0, 0.0); glVertex2f( 0.0, 0.0);
      glTexCoord2d(0.0, 1.0); glVertex2f( 0.0, panOpenGL.Height);
      glTexCoord2d(1.0, 1.0); glVertex2f(panOpenGL.Width, panOpenGL.Height);
      glTexCoord2d(1.0, 0.0); glVertex2f(panOpenGL.Width, 0.0);
    glEnd();
  //Matrix zurücksetzen
  glPopMatrix;
  // Texture Deaktivieren
  glDisable(GL_TEXTURE_2D);
  //Projection zurücksetzen
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

end;
gruss

Aphton 26. Dez 2013 12:17

AW: FFT Grid Vis
 
Zitat:

Warum tust du das ?
Du könntest ja einfach den window style des Fenster auf WS_EX_LAYERED setzen
dann wäre die Vis (Window)auch Transparent oder ?
Das extra rendern auf das Bitmap könntest du dir dann sparen.
So hatte ich das auch ursprünglich - ging aber leider nicht. OpenGL zeichnet dann einfach drüber, die Kontrolle muss aber Windows erhalten. Laut Recherche soll man in ein offscr Bitmap rendern, welches man dann per BitBlt (-> Windows) aufs Fenster zeichnen lässt; dann klappt das mit der Transparenz auch.

Zu deiner Methode: Jo, viele Wege führen zum Ziel. Ich habs halt so gemacht ^^

Zu den weißen Streifen - war ein Fehler meinerseits. Habs ausgbessert und weil ich schon dabei war, ein bisschen aufgeräumt. Ich stell den Quellcode mal online.

EWeiss 26. Dez 2013 12:18

AW: FFT Grid Vis
 
Zitat:

Zitat von Aphton (Beitrag 1241089)
Jo, viele Wege führen zum Ziel. Ich habs halt so gemacht ^^

Zu den weißen Streifen - war ein Fehler meinerseits. Habs ausgbessert und weil ich schon dabei war, ein bisschen aufgeräumt. Ich stell den Quellcode mal online.

Da ist nett von dir ;)
Wenn ich das portieren sollte kommt er postwendend zurück als Winamp Plugin ;)
Funktioniert jetzt sehr gut :thumb: bis auf das doubleclick Event das hast wohl zerschossen ;) (ops.. middle button nun) :)

Antialias wäre nicht schlecht ;)
Beim drehen ist das ganze an den Rändern sehr stufig.


gruss

EWeiss 30. Dez 2013 11:43

AW: FFT Grid Vis
 
Hab mir das jetzt nochmal in ruhe angesehen..
Nach dem ärger mit meinem Surface wirklich feine Sache ohne viel Geschnörkel drum herum :thumb:
verstehe nicht das sonst niemand dazu auch nur eine Zeile geschrieben hat.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz