2017-11-11 7 views
0

表2.2 GLhalfは16ビット浮動小数点スカラーであるが、ヘッダファイルには、それが整数型だ意味GLhalfは浮動小数点型か整数か? OpenGLの仕様に

typedef unsigned short GLhalf; 

として定義されるglext.h言います。どちらが正しいですか?

+1

これは仕様ではありません。テキストは「符号なしスカラー**で符号化された半精度浮動小数点値**」です。 – BDL

+0

@BDL:これはその質問の重複ではありません。その質問は 'GL_HALF_FLOAT'列挙子に関するものです。これは、その列挙子を使用しているものが消費するデータを埋めるために使用するCまたはC++データ型に関するものです。 –

答えて

0

GPhalでは、GLhalfは16ビット浮動小数点スカラー数で、その形式で加算/乗算されます。

CPUでは、多くのCコンパイラには16ビット浮動小数点型がありません。したがって、符号なしの短い定義は、各値がメモリ内で16ビットを占めることをCコンパイラに伝えるためです。

残念ながら、これはCコンパイラが/ etc /これらの値を追加/掛けさせることを意味します.CPUは16ビット整数演算を実行するため、これらの値を完全に縮めることになります。そうしないでください。 "foo = 2"と書かないでください

Cの半精度浮動小数点ライブラリを得ることができます。また、一部のCコンパイラは16ビット浮動小数点をサポートしています。 GLhalfでCPU操作をしたい場合は、それらのうちの1つを使用できます。

+0

16ビット浮動小数点を作成できるライブラリの1つを共有するように気をつけますか?半精度の数値の演算は、単精度のものより速く実行されるので、パフォーマンスが向上しますね。 –

+0

自分自身を使用していないので推奨しません。フォーマットがエミュレートされるので、CPUではそれほど高速ではありませんので、操作ごとに複数のCPU命令が必要です。 –

関連する問題