Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 20:59

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Slideshow
BeitragVerfasst: Sa Dez 24, 2005 12:10 
Offline
DGL Member

Registriert: Sa Dez 24, 2005 12:00
Beiträge: 3
Hallo zusammen!

Ich habe vor eine Art Foto Slideshow zu programmieren, wobei die Bilder ineinander übergeblendet werden sollen. Da das vor allem bei hochauflösenden Bildern ziemlich lahm sein dürfte, habe ich mir überlegt dafür OpenGL zu benutzen.
Bei den ersten Versuchen in OpenGL bin ich über euer schönes Forum gestolpert... 8)

Bisher habe ich es mit einem VCL-Template das ich hier irgendwo gefunden habe geschafft eine Textur zu laden. Das dumme ist nur, dass sich nur Texturen mit den Abmessungen 2^n * 2^n laden lassen, welche Fotos blöderweise nie haben.

Daher ein paar Fragen:
Ist es überhaupt möglich z.B. 5Megapixel Fotos in OpenGL als Textur zu laden oder muss ich die Fotos vorher schon irgendwie skalieren?
Wenn ja, was muss ich tun um Bilder zu laden, die üblicherweise im 4:3 oder 3:2 Format sind?

Gruß,
schmiesi


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 24, 2005 12:43 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
*finger bieg*

Hi,

OpenGL ist in der Tat ein sehr guter Weg, um dieses Problem zu lösen und mit OpenGL ist es auch (teilweise) direkt möglich Texturen zu laden, die nicht 2^n*2^n Pixel groß sind. Neuere Grafikkarten unterstützen eine Extension, die es auch erlaubt, rechteckige Texturen zu laden. Darauf würde ich mich aber nicht zwangsläufig verlassen. Es soll ja noch Leute mit alten Grakas geben, die das nicht haben (*pfeif*) ;) .
Indirekt geht das aber immer. Und zwar in etwa so:

Angenommen, du hast ein Bild, was z.B. 800x600 Pixel Ausmaße hat. Du könntest das jetzt in 512x512 Pixel Texturen unterteilen und damit dieses eine Bild in 4 Texturen zerhacken. Diese 4 Texturen musst du dann lediglich mit GL_QUADS wieder zusammensetzen. Aber das sollte das Problem nicht sein ^^

Weiterhin kannst du auch Textureloader wie glBitmap von Lossy_eX verwenden. glBitmap erkennt rechteckige Texturen und skaliert sie dementsprechend, sodass du diese rechteckige Textur wie eine quadratische verwenden kannst. Nachteil: Durch die Skalierung und Filterung gehen natürlich ein paar Details verloren. Vorteil: Schön einfach ;)

Fazit: Soll das qualitativ hochwertig sein, teile große Texturen (Solltest du ohnehin machen, da Grafikkarten i.d.r. auf kleinere Texturgrößen wie 256x256 optimiert sind) einfach auf ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 24, 2005 12:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Frase hat geschrieben:
Weiterhin kannst du auch Textureloader wie glBitmap von Lossy_eX verwenden. glBitmap erkennt rechteckige Texturen und skaliert sie dementsprechend, sodass du diese rechteckige Textur wie eine quadratische verwenden kannst. Nachteil: Durch die Skalierung und Filterung gehen natürlich ein paar Details verloren. Vorteil: Schön einfach ;)

Fast Frase fast. Ich persönlich mag und mache so etwas nicht. Aber es besteht immer noch die Möglichkeit die Texturen mittels der Glu zu erzeugen. Und die macht so etwas. Sonst kann ich dir als alternative die Extensions NV, EXT oder ARB_texture_rectangle anbieten. Mit denen kannst du auch nicht power of two texturen benutzen. Diese kannst du auch problemlos mit meinem Texturenloader benutzen du musst nur GL_TEXTURE_RECTANGLE_ARB als Target setzen. Musst aber überprüfen ob sie auch da sind. Sonst stimme ich frase voll zu.

Achja. Zu den übergrößen. Es sollte vollkommen genügen, wenn du die Bilder zum Anzeigen auf maximal Bildschirmgröße runterrechnen lässt. Und diese dann evtl wie frase sagte aufteilen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 24, 2005 13:05 
Offline
DGL Member

Registriert: Sa Dez 24, 2005 12:00
Beiträge: 3
Ich benutze den Texturloader glBitmap. Wenn ich BuildMipmaps einschalte kann ich direkt Bilder mit der max. Kantenlänge von 2048px laden und anzeigen. Soweit so gut.
Dass ich nur die maximale Bildschirmgröße brauche ist mir auch klar. Wie skaliere ich die Bilder am besten klein? Hat OpenGL da vielleicht irgendetwas parat, das nicht so CPU-lastig ist wie die herkömmlichen Methoden?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 24, 2005 15:58 
Offline
DGL Member

Registriert: Sa Dez 24, 2005 12:00
Beiträge: 3
Also das mit dem überblenden von zwei Bildern funktioniert schonmal ganz gut.

Die Bilder sind allerdings sehr unscharf, was ihr vermutlich mit Qualitätsverlust meintet.
Könnt ihr mir das mit dem zerlegen von Bildern mal etwas genauer erklären? gibt es da irgendwo ein Beispiel zu?

Vielen Dank schonmal für eure Hilfe bis hierher.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 25, 2005 00:26 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Hi,

hab' mal was kleines angehängt.
Also das dunkelblaue ist dein Foto.
Die roten Linien zeigen, wie man das große Foto in gleichmäßige kleinere Texturen zerteilt. So machst du hier z.B. aus einem Foto 6 Texturen.
Man kann sich das auch - passend zur Jahreszeit - als Plätzchenform darstellen. Mit der roten "Form" oder "Schablone" stanzt du gleichmäßige quadratische Teile aus dem großen blauen Foto aus ;)


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]