Wie gesagt, der Parameter
internalFormat (3ter Parameter) bei glTexImage2D bestimmt wie die Textur auf der GPU aussieht. Wenn du da z.B. FLOAT_RGBA32 angibst hast du eine 128bit Float Textur, also eine Textur mit 4 vollwertigen float Kanälen wo du jeden möglichen Wert reinschreiben kannst (GPUs unterstützen auch einen 16bit float typ genannt half der weniger Speicher/Bandbreite verbraucht und vor allem auf älteren Karten etwas bessere Performance bieten kann). Die beiden Parameter
format und
type geben nur an in welchem Format die init Daten an die Funktion übergeben werden. Das tatsächliche Texturformat hat mit dem nichts zu tun. Man sollte immer ein explizites
internalFormat angeben (z.B. GL_RGBA8 statt nur GL_RGBA usw.) da ansonsten der Treiber einfach nimmt was ihm gerade so einfällt. Bei float Texturen gilt es außerdem auch zu beachten dass vor allem ältere GPUs nur bestimmte ausgewählte Formate können und es evtl. einige Einschränkungen gibt (unterstützten z.B. oft kein Blending in einem float Rendertarget). Eine Liste mit den von NVIDIA unterstützten Texturformaten findest du beispielsweise
hier