2016-07-07 16 views
0

Ich muss ~ 1 MB 1D Bilddaten (rgba8) übergeben, um Shader zu berechnen. Ich habe das mit 2D-Textur versucht und alles ist in Ordnung.Read rgba8 von SSBO

Jetzt bin ich interessant, wie man das mit SSBO erreicht. Ich kann keine Daten als void * mit glBufferData übergeben. Aber wie Pixel aus dem SSBO in Shader als vec4 lesen?

Antwort

2

Sie können nicht. Sie müssen die Daten manuell entpacken.

Sie müssen ein Pixel der Daten als uint (eine 32-Bit-Ganzzahl ohne Vorzeichen) lesen. Dann müssen Sie die Bit-Manipulation verwenden, um die 4 8-Bit-Komponenten aus diesen Daten zu entpacken. Dann normalisieren Sie es wieder in 4 Floats.

Zum Glück hat GLSL die unpackUnorm4x8 Funktion, die genau dies tut. Es dauert ein uint und spuckt einen vec4 aus.