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

Aktuelle Zeit: Mo Jul 14, 2025 19:22

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Wie texturiert man richtig?
BeitragVerfasst: Sa Dez 31, 2011 14:26 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Hey,

Ich wüsste gerne mal, wie man eigentlich am besten texturiert. Dabei sollte natürlich die Qualität optimal sein aber auch die Performance nicht zu kurz kommen!
Aktuell mache ich es wie folgt:
-Texture laden und dann generieren
Code:
  1. glGenTextures(1, &textureId);
  2. glBindTexture(GL_TEXTURE_2D, textureId);
  3. gluBuild2DMipmaps(GL_TEXTURE_2D, GL_COMPRESSED_RGB, image->width, image->height, GL_RGB, GL_UNSIGNED_BYTE, image->pixels); //MipMapping


Dann später beim Rendern die Texture wieder binden mit glBindTexture und dann folgt das:
Code:
  1. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  2. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  3. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, maximumAnistropy);


Also Lineare_Mipmaps, dann noch eine Lineare Filterung sowie AF.
Ich habe halt nur irgendwie das Gefühl, dass das alles nicht so optimal gelöst ist :roll: Allein schon weil ich gelesen habe, dass gluBuild2DMipmaps verbuggt und langsam sein soll.
Wie wäre denn eine Optimale Abfolge zum erstellen der Texture und wie müsste es später im Renderdurchgang aussehen? Mipmaps sollte es zudem weiterhin geben.

MfG und einen guten Rutsch :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie texturiert man richtig?
BeitragVerfasst: Sa Dez 31, 2011 15:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also, Mipmaps kann man auf zwei andere arten bauen:
(für Versionen <= 3.0)
Code:
  1. glBindTexture(GL_TEXTURE_2D, tex);
  2. glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);


(für alle >= 3.0)
Code:
  1. glBindTexture(GL_TEXTURE_2D, tex);
  2. glEnable(GL_TEXTURE_2D); // nur bei ATI notwentig (bug)
  3. glGenerateMipmap(GL_TEXTURE_2D);


Siehe auch: Opengl.org / Common Mistakes # Automatic mipmap generation

guten rutsch!

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie texturiert man richtig?
BeitragVerfasst: So Jan 01, 2012 11:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Bestimmte Bildformate enthalten bereits vor generierte Mipmaps, so zum Beispiel DDS. Hier würde man die Mipmaps eben manuell aus der Bilddatei laden und nicht automatisch erzeugen. Dafür gibst du beim zweiten Parameter von glTexImage2D das jeweilige Mipmaplevel an. Das vorgenerieren von Mipmaps macht vor allem Sinn bei Texturen die komprimiert im Grafikspeicher (*) liegen sollen, also den DXT-Formaten. Hier ist nämlich das komprimieren des Bildes extrem rechenintensiv weshalb man das nicht beim laden machen möchte. Dafür ist das dekomprimieren deutlich schneller als das lesen unkomprimierter Texturen.

(*) Normalerweise liegt die Textur unkomprimiert im Grafikspeicher, auch wenn sie etwa als JPG komprimiert auf der Festplatte liegt. Hier geht es um Texturen die zur Laufzeit von der Grafikhardware dekomprimiert werden können. Das reduziert den Speicherbedarf auf 1/6, aber auch die Bildqualität leidet.

_________________
Yeah! :mrgreen:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]