0

2D テクスチャを作成していますが、テクスチャが実際に格納されているデータ タイプについて混乱しています。私の入力は、今のところ 0-1 に正規化された 2D 32 ビット float 配列です。私はこれに似た呼び出しでテクスチャを作成しています:

glTexImage2D(self._target, 0, GL_LUMINANCE, GL_LUMINANCE, gl.GL_UNSIGNED_BYTE, (2048, 8192))

そして、これに似たものでデータをプッシュします:

glTexSubImage2D(self._target, 0, x, y, GL_LUMINANCE, GL_FLOAT, data)

輝度を使用しているため、データは float として 0 から 1 にクランプされ (これが正規化する理由です)、GLSL で vec4 (L、L、L、1) として利用できることを理解しています。しかし、そのフロートを格納するために実際に使用されるデータ型は何ですか? 単一の 32 ビット float として保存され、GLSL の vec4 のように見えますか?

GL_R32F などに切り替えた場合、テクスチャはルミナンスと同じ量のビデオ メモリを占有するのでしょうか? 輝度データを 0 から 1 にクランプしない方法はありますか。アルファを追加して値を「塗りつぶす」以外の一般的な方法はありますか (NaN や -9999.0 などのように、テクセルをレンダリングしてはならないことを示す値) )?

助けてくれてありがとう。pyopengl をラップする vispy python パッケージを使用しています。

4

1 に答える 1