2016-03-24 10 views
1

Das Thema betrifft OpenGL ES 2.0.DXT Textur arbeitet trotz S3TC nicht unterstützt

Ich habe ein Gerät, dass, wenn an den Verlängerungen abgefragt über

glGetString(GL_EXTENSIONS) 

eine Liste der unterstützten Erweiterungen Kosten, von denen keine GL_EXT_texture_compression_s3tc ist.

AFAIK, nicht haben GL_EXT_texture_compression_s3tc sollte nicht erlauben, DXT komprimierte Texturen zu verwenden.

Wenn jedoch DXT komprimierte Textur auf dem Gerät verwendet werden, rendern sie ohne Probleme.

Texturdaten werden mit glCompressedTexImage2D übergeben.

Versucht für DXT1, DXT3 und DXT5.

Warum funktioniert es? Ist es sicher, eine Texturkomprimierung zu verwenden, obwohl die Komprimierung nicht unterstützt wird?

Antwort

2

Ich denke, dass fehlende Unterstützung für GL_EXT_texture_compression_s3tc nicht bedeutet, dass Sie komprimierte Formate nicht verwenden können. Sie können trotzdem unterstützt werden.

Zitat aus glCompressedTexImage2D doc page for ES2:

das Texturbild wird nach der Erweiterung Spezifikation dekodiert die angegebenen internalformat definieren. OpenGL ES (...) bietet einen Mechanismus, um symbolische Konstanten für solche Formate zu erhalten, die von Erweiterungen bereitgestellt werden. Die Anzahl der unterstützten komprimierten Texturformate kann sein, indem der Wert GL_NUM_COMPRESSED_TEXTURE_FORMATS abgefragt wird. Die Liste der unterstützten spezifischen komprimierten Texturformate kann sein, indem der Wert GL_COMPRESSED_TEXTURE_FORMATS abgefragt wird.

Hinweis, dass es nichts über GL_EXT_texture_compression_s3tc gibt. Unterstützung für verschiedene Funktionen kann implementiert werden, obwohl ihre 'pseudo-standardisierten' (ich meine - extensionized) Substitute nicht als unterstützt aufgeführt sind.

Sie sollten wahrscheinlich diese Konstanten (GL_NUM_COMPRESSED_TEXTURE_FORMATS und GL_COMPRESSED_TEXTURE_FORMATS) abfragen glGetIntegerv() verwenden, zu lernen, welche Formate komprimiert sind tatsächlich unterstützt.

Verwandte Themen