Farbe scheint als vec4 Struktur, bestehend aus 4 mit einfacher Genauigkeit Gleitkommazahlen
Zuerst immer definiert werden: es ist nicht. Wenn Sie eine Textur laden, versuchen Sie es mit einem der großen Formate als internes Format. Zum Beispiel ist GL_RGBA8 ein normalisiertes Format mit 8 Bits pro Kanal. GL_RGBA16F ist ein 16-Bit Gleitkommaformat pro Kanal. Es gibt viele.
Die Vielfalt ist aus Gedächtnisgründen vorgesehen, wie Sie sagen, aber auch für algorithmische Entscheidungen. Z.B. Sie können Texturansichten verwenden, um eine ganzzahlige Einkanal-Textur als 4-Byte-Vierkanaltextur zu lesen. Ein weiteres Beispiel: Sie können einen Tiefpass-Tiefendatenpuffer als atomaren Ganzzahlpuffer für das Tief-Peeling mit Single-Pass-Tiefe unter Verwendung von 64-Bit-Atomics anzeigen.
Wie für Vertex-Daten haben Sie wieder Ihre Wahl. Die API bietet verschiedene Schritte und Größen für Ihre Daten. Intern wird das Format jedoch fast immer in Fließkommawerte konvertiert, bevor der Shader ausgeführt wird.
Warum? Weil alle Daten ohnehin von einem Fließkomma-Prozessor verarbeitet werden. Alles, was Sie tun - Überblendung, Texturmodulation, BRDF-Modulation usw. - erfolgt in Gleitkomma. Das ist in Ordnung; Das Rendern wird normalerweise durch Fragment-Shader-Textur-Zugriffe gebunden, so dass die Fließkomma-Berechnung vergleichsweise frei ist.
OpenGL hat auch 'glColor3ub', die Bytes für jede Komponente verwendet. – Dai
128 Bits sind 16 Bytes, nicht 32. –
computergraphics.stackexchange. . . – imallett