Checkliste Texturierung: Unterschied zwischen den Versionen
Aus DGL Wiki
Flash (Diskussion | Beiträge) K |
(→Problemspezifisches: anisotropische Filterung) |
||
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 9: | Zeile 9: | ||
*'''Funktioniert das Programm ohne Texturierung?''' | *'''Funktioniert das Programm ohne Texturierung?''' | ||
− | :Kommentieren Sie allen | + | :Kommentieren Sie allen Texturierungsrelevanten Code aus, und prüfen Sie die Ausgabe. |
*'''Läuft das Programm ohne OpenGL-Fehler zu produzieren?''' | *'''Läuft das Programm ohne OpenGL-Fehler zu produzieren?''' | ||
Zeile 27: | Zeile 27: | ||
*'''Haben Sie die Textur gebunden?''' | *'''Haben Sie die Textur gebunden?''' | ||
− | :Der Befehl zum binden von Texturen lautet [[glBindTexture]]. Einige Loader (z.B. [[Glbitmap_loader|glBitmap.pas]]) besitzen eine Funktion namens "bind" welche | + | :Der Befehl zum binden von Texturen lautet [[glBindTexture]]. Hierzu gehört natürlich auch, dass die Textur geladen wurde. Dazu benutzt man üblicherweise einen Texturloader. Einige Loader (z.B. [[Glbitmap_loader|glBitmap.pas]]) besitzen eine Funktion namens "bind" welche nach dem Laden das Binden für sie übernimmt. |
+ | |||
+ | *'''Sind die Filter der Textur richtig gesetzt?''' | ||
+ | :Wenn keine [[Mipmap|Mipmaps]] generiert wurden, bekommt man ohne explizite Filterangabe mittels [[glTexParameteri]] nur eine weiße Ausgabe. Daher die Filter auf nicht-Mipmap-Werte setzen oder Mipmaps, z.B. mit '''GL_GENERATE_MIPMAPS''' erzeugen. | ||
+ | |||
+ | *'''Ist anisotropische Filterung aktiviert?''' | ||
+ | :Gefilterte Texturen können unter einem flachen Blickwinkel sehr unscharf erscheinen. Mit der Extension [[GL_EXT_texture_filter_anisotropic]] werden die Texturen einheitlich, unabhängig vom Beobachtungswinkel gefiltert. | ||
*'''Ist die Textur in einem gültigen Format?''' | *'''Ist die Textur in einem gültigen Format?''' | ||
− | :Texturen müssen im sogenannten "2^n Format" sein. Das heißt das die Seitenlänge der Textur (in Pixel) eine Potenz von 2 sein muss (z.B. 32x32, 64x256, 1024x512). Nur Karten die offiziell den OpenGL2.0 Standard unterstützen können auch andere Formate benutze (z.B. 1024x768, 112x232). | + | :Texturen müssen im sogenannten "2^n Format" sein. Das heißt das die Seitenlänge der Textur (in Pixel) eine Potenz von 2 sein muss (z.B. 32x32, 64x256, 1024x512). Nur Karten die offiziell den OpenGL2.0 Standard unterstützen können auch andere Formate benutze (z.B. 1024x768, 112x232). (Bei falschen Texturgrößen wird das Objekt sonst einfach farbig und untexturiert gerendert.) |
:Um zu Prüfen welchen Standard ihre Grafikkarte unterstützt lesen sie den Artikel zu [[glGetString]] | :Um zu Prüfen welchen Standard ihre Grafikkarte unterstützt lesen sie den Artikel zu [[glGetString]] | ||
Aktuelle Version vom 12. Februar 2012, 16:32 Uhr
Inhaltsverzeichnis
Verwendung der Checkliste
Die nachfolgende Checkliste sollte nach und nach abgearbeitet werden um einfache Fehler auszuschließen. Wenn ein Punkt mit ja beantwortet werden kann, kann man den nächsten Punkt angehen.
Grundlagen
- Benutze ich eine funktionierende Programmgrundlage (Template)?
- Wurde ein Template von DelphiGL.com benutzt, oder wurde das Template bereits erfolgreich getestet dann kann von einer Funktionierenden Programmgrundlage ausgegangen werden.
- Funktioniert das Programm ohne Texturierung?
- Kommentieren Sie allen Texturierungsrelevanten Code aus, und prüfen Sie die Ausgabe.
- Läuft das Programm ohne OpenGL-Fehler zu produzieren?
- Benutzen Sie einen Error-Handler wie er im "Tutorial_quickstart" beschrieben wird, um dies zu testen.
- Tritt der Fehler bei der Benutzung eines speziellen Texturloaders auf?
- Lesen Sie die Dokumentation zu dem von ihnen favorisierten Texturloader. z.B: glBitmap.pas
Problemspezifisches
- Haben Sie die Texturierung für das entsprechende Objekt aktiviert?
- Falls alle Objekte mit Texturen gezeichnet werden sollen, reicht es beim Setup von OpenGL per glEnable(GL_TEXTURE_2D) Texturierung zu aktivieren.
- Falls nur einzelne Objekte texturiert werden sollen, muss vor diesem Objekt Texturing aktiviert, und vor den texturlosen Objekten Texturing wieder deaktiviert (glDisable(GL_TEXTURE_2D)) werden.
- Haben Sie Texturcoordinaten für die zu texturierenden Objekte festegelegt?
- Texturcoordinaten werden mit glTexCoord spezifiziert.
- Haben Sie die Textur gebunden?
- Der Befehl zum binden von Texturen lautet glBindTexture. Hierzu gehört natürlich auch, dass die Textur geladen wurde. Dazu benutzt man üblicherweise einen Texturloader. Einige Loader (z.B. glBitmap.pas) besitzen eine Funktion namens "bind" welche nach dem Laden das Binden für sie übernimmt.
- Sind die Filter der Textur richtig gesetzt?
- Wenn keine Mipmaps generiert wurden, bekommt man ohne explizite Filterangabe mittels glTexParameteri nur eine weiße Ausgabe. Daher die Filter auf nicht-Mipmap-Werte setzen oder Mipmaps, z.B. mit GL_GENERATE_MIPMAPS erzeugen.
- Ist anisotropische Filterung aktiviert?
- Gefilterte Texturen können unter einem flachen Blickwinkel sehr unscharf erscheinen. Mit der Extension GL_EXT_texture_filter_anisotropic werden die Texturen einheitlich, unabhängig vom Beobachtungswinkel gefiltert.
- Ist die Textur in einem gültigen Format?
- Texturen müssen im sogenannten "2^n Format" sein. Das heißt das die Seitenlänge der Textur (in Pixel) eine Potenz von 2 sein muss (z.B. 32x32, 64x256, 1024x512). Nur Karten die offiziell den OpenGL2.0 Standard unterstützen können auch andere Formate benutze (z.B. 1024x768, 112x232). (Bei falschen Texturgrößen wird das Objekt sonst einfach farbig und untexturiert gerendert.)
- Um zu Prüfen welchen Standard ihre Grafikkarte unterstützt lesen sie den Artikel zu glGetString
Multitexturing
- Unterstützt die Zielgrafikkarte Multitexturing?
- Im Tutorial Multitexturing wird erklärt, wie man checkt, ob Multitexturing von Grafikkarte und Treiber unterstützt wird.