浮動小数点値を「ペイント」するには、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」がサポートされていることです。ただし、前述のように機能しません。