7

浮動小数点値を「ペイント」するには、gl_FragColorが必要です。浮動小数点値は、負(x <0)および>1.0の場合もあります。次に、この値がレンダリングされた場所でFBOのカラーアタッチメントを使用し、別のFBOのテクスチャとして使用します。http://www.khronos.org/opengles/sdk/docs/man/(glTexImage2Dの下)で、すべての値が[0、1]の範囲にクランプされていることを読みましたが、glClampColorも見つかりませんでした。命令。ここで回避策を見つける可能性はありますか、または誰かが私の問題を解決するのに役立つアイデアを持っていますか?:)

解決済み

浮動小数点テクスチャを使用する場合、値は[0、1]にクランプされない可能性がありますが、テクスチャの内部形式としてGL_HALF_FLOAT_OESを使用した場合にのみ機能します。代わりにGL_FLOATを使用すると、フレームバッファオブジェクトが不完全になります。これは非常に悲しいことです。これは、合計領域テーブル(SAT)を作成していて、ここで大きな精度の問題が発生したためです。したがって、一般的に、iPad2では半精度(2バイト、1符号ビット+5指数ビット+10小数)の浮動小数点数しかサポートされていないようです。

FBOのカラーアタッチメントテクスチャの作業作成

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_HALF_FLOAT_OES, NULL);

もう1つ言及すること:Instrumentsは「引数'type'の無効な列挙型」メッセージを報告しますが、とにかく機能します。また、シミュレーターは、指定された半精度の代わりに完全精度のテクスチャを使用します(Cにはそのようなデータ型がないためだと思います)。これが、シミュレータでの精度の問題が少なくなる可能性がある理由です。

しかし、最も紛らわしいのは、glGetString(GL_EXTENSIONS)を出力するときに「GL_OES_texture_float」がサポートされていることです。ただし、前述のように機能しません。

4

2 に答える 2

4

これはフロートテクスチャには当てはまらないと思います。拡張機能のドキュメントを確認してください。

http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt

それは言及します:

「選択されたグループは、セクション3.6.2で説明されているように処理され、RGBAへの最終拡張後に停止します。テクスチャの内部形式が固定小数点の場合、コンポーネントは[0,1]にクランプされます。それ以外の場合、値は変更されません。 「」

于 2012-12-20T18:52:18.200 に答える
1

フロートテクスチャのすべては、シェーダーでaprox [+ inf、-inf]をサポートすることです。ここでさらに役立つ情報を見つけることができます:iOSで浮動小数点テクスチャにレンダリングする

于 2012-12-21T09:35:31.617 に答える