2012-03-27 21 views
0

Ich habe eine große Sprite-Bibliothek und möchte die GPU-Speicheranforderungen reduzieren. Kann ich Texturen auf der GPU mit nur 1 Byte pro Pixel speichern und diese für eine RGB-Farbsuche in einem Fragment-Shader verwenden? Ich sehe widersprüchliche Berichte über die Verwendung von GL_R8.OpenGL-Farbindex in Frag Shader?

Antwort

3

Ich würde sagen, das hängt wirklich davon ab, ob Ihre Hardware dieses Texturformat unterstützt oder nicht. Wie wäre es, wenn Sie das gesamte Problem überspringen, indem Sie stattdessen eine Textur A8R8G8B8 verwenden? Es würde nur komprimiert werden, d. H. Unter Verwendung einer Bitmaske (oder von r/g/b/a-Elementen in glsl), um "Subpixel" -Werte zu lesen. Wie das erste Pixel im Alpha-Kanal gespeichert wird, das zweite Pixel im roten Kanal, das dritte Pixel im grünen Kanal usw.

Sie können dies sogar verwenden, um bis zu 4 Ebenen in einem einzigen Bild zu speichern (maximale Texturbreite/-höhe)); nur eins zu pflücken sollte kein Problem sein.

+0

OIC Ich bin dogmatisch, nicht ich! – spinning