2016-10-03 12 views
1

OpenGL ESでは、色の範囲は0〜1fです。これらの値は、別名8ビットの0〜255に直接マッピングされますか?または、0-1fの範囲は8ビット以上でより細かい色を実現しますか?Android OpenGL ESのグレースケール色深度

rgbが等しい(グレースケールなので)効果的にイメージが8ビットであるパターンをプログラムで作成しています。私は16ビットなどのグレースケールでより深い色深度を達成したいと思います、これは可能ですか?

答えて

1

入力/出力テクスチャの形式によって異なります。 RGB565の場合は8ビット未満になり、RGB10_A2の場合は8ビット以上になります。

テクスチャフィルタリング(例えば、双線形または三線形)は、一般に、元のデータよりも高い精度で行われるので、結果が正確ではない。 8ビットテクスチャの場合は1/256の倍数です。

16ビットなどのグレースケールでより深い色深度を実現したいのですが、これは可能ですか?

OpenGL ES 3.0には、fp16とfp32のフォーマットがあります。したがって、比較的任意のデータをチャンネルごとに8ビット以上で保存することは間違いありません。

しかし、実際の質問はどのような目的ですか?画面に値を表示しようとすると、チャネルごとに16ビットの色を実際に表示できるデバイスがないことになります。ほぼすべてのコンシューマーグレードのモニターとモバイルデバイスパネルは、1つのカラーチャネルで8ビットです(モバイルでは、多くはそうではなく、8ビットデータを受け入れますが、パネルでは6または7ビットの精度しか表示しません)。

+0

ご回答ありがとうございます。私がやっていることは、プログラムでパターンを生成して、私が見たいと思っているものです。コントラストの微妙な違いを実現したいのです。たとえば、最大250、最小248のパターンをrgbグレースケールで使用し、その間に値を補間すると、これは8ビット解像度で表示できる最小のコントラストです。私はそれで遊ぶために明るさを変えることができますが、最終的に私はそれらの値を細かく制御したいと思っていました。 また、私はビットマップを使用していません。私は頂点のあるカラーデータをシェーダに直接渡しています。違いがありますか? – Karam

+0

トーンマッピングを行うことができます。入力色の範囲を別のものに再マッピングします。アイデアのためのHDRトーンマッピングテクニックのいくつかを見てください。コンセプトの多くは、あなたが試しているものに似ています(1つの輝度範囲を上下に拡大して別の表示範囲にスケールします)。それは些細なことではありません - 特にコントラストを上げるためにスケーリングする場合、バンディングの問題を避けるためにいくつかのフィルタリングが必要な場合があります。しかし、1日の終わりには、使用しているパネルの8ビット限界に達するでしょう。 – solidpixel

関連する問題