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

Aktuelle Zeit: So Jul 27, 2025 11:50

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Texturen generieren langsam?
BeitragVerfasst: Mi Sep 01, 2004 20:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 28, 2004 18:30
Beiträge: 25
Wohnort: Chemnitz
Hallo,

ich nutze OpenGl um ein gleines 2D Spiel zu machen (GL_Ortho), zum Texturenladen nehm ich die glBitMap Unit. Das Problem ist nur, dass bei etwas größeren Texturen (304*304, etc.) die Texturengenerierzeit (also in der Procedure GenTexture des GLBitmap2D Objekts der glBitmap Unit), so dass das programm auf meinem 1,7 Ghz, Radeon 9800 3 Sekunden lang lädt (da die Texturen generiert werden).Das Problem ist, dass es auf'ner 800 Mhz CPU schon 9 Sekunden sind (und das bei nur 3 Texturen!). Warum ist das so, und was kann ich dagegen tun? (warum dauert der Aufruf von GenTexture so lange?)

mfg
GSE

_________________
In a world without walls and fences, who needs Windows or Gates?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 20:49 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
wahrscheinlich hilft es schon, wenn du diene Texturen in ein Format der Größe 2^n * 2^n bringst...
versuch das am besten mal aus :-)

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 20:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 28, 2004 18:30
Beiträge: 25
Wohnort: Chemnitz
hat ich auch schon ausprobiert, bringt aber leider nicht wirklich was (eigentlich überhaupt nichts)
an irgendwas muss es doch liegen, ich kann doch niemandem solche ladezeiten zumuten

_________________
In a world without walls and fences, who needs Windows or Gates?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 21:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
gluBuild2DMipmaps ist mit Sicherheit dein Problem. Diese Funktion ist nunmal leider sehr langsam. Alternativen :
  • Automatische MipMap-Generierung (via GL_SGIS_generate_mipmap), sofern es die Hardware kann (eher nur auf modernen Karten)
  • Dateiformat nutzen in dem die Mipmaps bereits abgelegt sind (DDS).
  • Mipmaps offline (wie bei DDS, aber jede Mipmap als eigene Datei) generieren und dann via glTexImage2D selbst an die einzelnen Mipmapstufen hochladen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 21:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Versuche einmal deine Texturen zu generieren, wenn du BuildMipMaps von den Texturobjekten ausgestellt hast. Dann wedren diedirekt übertragen und es wird kein gluBuild2DMipmaps aufgerufen. Wenn das schneller ist, dann bleiben nur die Möglichkeiten von SOS.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 01, 2004 21:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 28, 2004 18:30
Beiträge: 25
Wohnort: Chemnitz
Zitat:
Versuche einmal deine Texturen zu generieren, wenn du BuildMipMaps von den Texturobjekten ausgestellt hast
dann zeigt er meine texturen gar nicht mehr an (bzw. nur die die keinen AlphaCHannel haben werdne angezeigt).

Zitat:
Dateiformat nutzen in dem die Mipmaps bereits abgelegt sind (DDS).
wär mir ja sympathisch, gibt's da ne möglichkeit die in OGL zu laden (bzw. die überhaupt extern zu erstellen)

und noch'ne verständnisfrage (will j auch wa lernen *g*): Was ist überhaupt eine MipMap und wozu muss die generiert werden? wär nett wenn mir das einer erklären könnte, thx

mfg
GSE

_________________
In a world without walls and fences, who needs Windows or Gates?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 02, 2004 00:24 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Du kannst die von gluBuildMipmaps generierten Texturen wieder zurückholen, auf Festplatte speichern und das nächste Mal direkt von dort laden, oder du machst das Selbe mit gluScaleImage, was dir den Umweg über OpenGL erspart.
Da GLU aber selbst ebenfalls nur einen einfachen Boxfilter implementiert, um Mipmaps zu generieren, bist du mit einer anderen Bildbearbeitungsbibliothek (etwa Bitmap32) genausogut oder sogar besser bedient.

Mipmaps sind (normalerweise) jeweils um den Faktor 2 verkleinerte Versionen der ursprünglichen Textur, die mit speziellen (und teils rechenaufwändigen) Filtern generiert werden, da insbesondere bei kontrastreichen Bildern Artefakte entstehen, wenn man einfach die halben Bildpunkte weglässt.

Für DDS gibt es Plugins im Photoshop, Gimp, das DirectX SDK - und für Delphi habe ich hier eine Importbibliothek für das Format geschrieben (bzw. hauptsächlich portiert) http://www.delphigl.com/forum/viewtopic.php?t=2486&highlight=dds, das SoS inzwischen sogar um eine rudimentäre Importfunktion für 3D-Texturen nachgerüstet hat.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 02, 2004 14:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 28, 2004 18:30
Beiträge: 25
Wohnort: Chemnitz
Zitat:
Mipmaps sind (normalerweise) jeweils um den Faktor 2 verkleinerte Versionen der ursprünglichen Textur, die mit speziellen (und teils rechenaufwändigen) Filtern generiert werden, da insbesondere bei kontrastreichen Bildern Artefakte entstehen, wenn man einfach die halben Bildpunkte weglässt.
und wozu braucht man die?

Zitat:
Für DDS gibt es Plugins im Photoshop, Gimp,
Wo kann ich das runterladen, hab das bei NVIDIA net gefunden, und sonst nur Plugins für PhotoShop was ich nicht hab (hab noch eins für gimp gefunden konnte aber die dateien nur lesen und außerdem lief's nur mit der linux version von the gimp (denk ich))

schonmal thx

mfg
GSE

_________________
In a world without walls and fences, who needs Windows or Gates?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 02, 2004 18:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Die MipMaps werden normalerweise von deiner Grafikkarte automatisch eingesetzt, wenn die Fläche weiter weg ist. Das ist ein recht simpler aber wirkungsvoller Trick um Bandbreite zu sparen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 03, 2004 10:59 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Ich habe doch erklärt wozu man Mipmaps braucht - um die unschönen Artefakte wegzubekommen, die entstehen, wenn man Bilder ohne Filter verkleinert.

Alternativ könnte man in Mipmaps auch beliebige Bilder (also keine verkleinerten Versionen der Quelle) ablegen, um "Spezialeffekte" zu erzeugen - so wirklich brauchbar wird das aber wahrscheinlich erst mit programmierbaren Shadern, wo man im Fragmentprogramm selbst auswählen kann, auf welche Mipmapstufe man zugreift - so könnte man z.B. in einer Textureinheit sowohl hoch als auch niedrig aufgelöste Bumpmaps ablegen, wie sie manchmal benötigt werden (ich denke hier an parallax Mapping).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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.008s | 14 Queries | GZIP : On ]