2016-07-07 3 views
0

シェーダを計算するために〜1MBの1Dイメージデータ(rgba8)を渡す必要があります。私は2Dテクスチャでそれを試してみました。SSBOからrgba8を読む

今私はSSBOでそれを達成する方法が面白いです。 glBufferDataでvoid *のデータを渡すことができます。 しかし、シェーダのSSBOからピクセルを読み取るには、vec4

答えて

2

できません。データを手動で解凍する必要があります。

データのピクセルをuint(32ビットの符号なし整数)として読み取る必要があります。次に、そのデータから4つの8ビットコンポーネントをアンパックするためにビット操作を使用する必要があります。次にそれを4つの浮動小数点に正規化します。

幸いにも、GLSLにはunpackUnorm4x8という機能があります。これはまさにこれを行います。それはuintをとり、vec4を吐き出します。