Registriert: Mi Aug 28, 2002 17:03 Beiträge: 37 Wohnort: ABG
Hi!
Ich habe mal mir ein Samplecode angeschaut, der DDS Texturen laden konnte. Diese DDS Dateien beinhalteten schon komprimierte Daten, die direkt an glCompressedTexImage2D übergeben wurden.
Kann man auch unkomprimierte Daten irgendwie übergeben lassen?
Weiter würde mich interessieren, wie ich herausfinden kann, welche Kompressionsalgorithmen mein/e Treiber/Grafikkarte unterstützt (also z. B. S3TC oder FXT1)
Gibt es eine kleinste Texturgröße für komprimierte Texturen?
mfg olli
_________________ Programmieren beginnt im Kopf und endet im Compiler
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Zitat:
Kann man auch unkomprimierte Daten irgendwie übergeben lassen?
glTexImage2D. Bekommt die Texturdaten im Rohformat.
Zitat:
Weiter würde mich interessieren, wie ich herausfinden kann, welche Kompressionsalgorithmen mein/e Treiber/Grafikkarte unterstützt (also z. B. S3TC oder FXT1)
Dazu gibt es Extension. Ich weiß selber allerdings nicht 100%tig welche genau was macht und wo die unterschiede liegen. Ich denke auch mal, dass es nicht ganz so wichtig ist. Mag mich da aber auch irren. GL_ARB_texture_compression (ab OpenGL 1.3 im Kern) GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1 GL_NV_texture_compression_vtc GL_3DFX_texture_compression_FXT1 (Dürfte wohl schon älter sein)
Ich persönlich benutze in meinem Loader primär die ARB_texture_compression, da diese Herstellerunabhängig ist. Sie implementiert allerdings irgendeine kompression. Welchen das entscheidet die Karte. Mit GL_TEXTURE_COMPRESSION_HINT_ARB kann man die Geschwindigkeit/Qualität kontrolieren.
Zitat:
Gibt es eine kleinste Texturgröße für komprimierte Texturen?
Nö. Ist mir nichts bekannt. Allerdings macht es bei ganz kleinen Texturen eher weniger Sinn. Heißt aber nicht, dass es nicht unterstützt wird.
Registriert: Mi Aug 28, 2002 17:03 Beiträge: 37 Wohnort: ABG
Ich nochmal...
Wenn ich gluBuild2DMipmaps(GL_TEXTURE_2D, GL_COMPRESSED_RGBA, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, Data) benutze, dann benutzt er komprimierte Texturen. Das geht auch, wenn ich z. B. GL_COMPRESSED_RGBA_S3TC_DXT3_EXT angebe.
glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT , Width, Height, Width*Height*4, Data)
-> Ohne Fehler, aber sie wird nicht angezeigt.
glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, Width, Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Data)
-> Ohne Fehler, aber sie wird nicht angezeigt.
glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, Width, Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, Data)
-> Ohne Fehler, aber sie wird nicht angezeigt.
GL_ARB_texture_compression und GL_EXT_texture_compression_s3tc sind als Extensions vorhanden.
mfg olli
_________________ Programmieren beginnt im Kopf und endet im Compiler
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ich kann dir nur Empfehlen mal meine glBitmap (link in Signatur) anzuschauen. Dort mache ich das alles. Für Mipmaps gibt es eine bessere und schnellere Methode. Und sie schmeckt nach Vanille. Kleiner Scherz. Ich benutze gluBuild2DMipmaps nur als absolut letzte Alternative. Also wenn GL_SGIS_generate_mipmaps oder GL Version 1.4 oder 1.3 nicht existiert und MipMaps gewünscht sind. Anderenfalls benutze ich immer glTexImage2D! Bei Compressed prüfe ich zu erst ARB_texture_compression und anschließend s3tc ab.
Registriert: Mi Aug 28, 2002 17:03 Beiträge: 37 Wohnort: ABG
Arrrrg, sau dummer Fehler von mir: Ich habe vergessen, den Texturefilter zu setzen. Das ist mir damals schon bei den Cubemaps passiert, wo ich mehrere Tage vor dem Problem gesessen habe
Danke für die Info mit den MIPMaps! Mal wegen den OpenGL Versionen...
Wenn man z. B. OpenGL 2.0 hat, dann sind ja z. B. die Texturetargets GL_TEXTURE_CUBE_MAP fest integriert, muss dann also glGetSTring(GL_EXTENSIONS) diese dennoch explizit aufführen? Nicht das in meiner Engine ein Feature nicht genutzt werden kann, weil es schon fester Bestandteil ist. (Z. B. konnte einer mit einer neuen Grafikkarte keine FragmentProgramme ARBfp1.0 nutzen, könnte event. daran liegen)
mfg olli
_________________ Programmieren beginnt im Kopf und endet im Compiler
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Cube Maps sind meines wissens ab 1.3 oder 1.4 dabei. Und nein das musst du nicht expliziet abfragen. Bei Cubemaps haben die Konstanten die selben Werte. Du kannst also auch GL_TEXTURE_CUBE_MAP benutzen wenn nur die Extension unterstützt wird. Also in etwa.
If Extension or GL_VERSION_1_3 then Cube Map.
Das wird eigentlich recht häufig gemacht und man kann sich so redundante Schreiberrei sparen kann.
Auch das habe ich häufiger in meiner glBitmap benutzt.
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.