2012-12-20 4 views
7

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

は、それが可能であり、値は浮動小数点テクスチャを使用する場合、すべての[1,0]にクランプされていないが、それは唯一のテクスチャの内部形式として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); 

もう一つの

の作業の作成はもちろんのこと:楽器は、メッセージ「引数の 『タイプ』のために無効な列挙型」を報告しますが、それはとにかく動作しません。また、シミュレータは、指定された半精度の代わりに完全精度のテクスチャを使用します(Cでは、そのようなデータ型がないと思います)。これが、シミュレータ上の精度が問題になる可能性が低いためです。

しかし、最も紛らわしいことは、glGetString(GL_EXTENSIONS)を印刷するときに "GL_OES_texture_float"がサポートされていることです。しかし、前述のように、それは動作しません。

+1

使用しているテクスチャの内部タイプは何ですか? –

+0

申し訳ありませんが、皆さん、すごくいい休日を過ごしたことを願っています。これまでのところとても大変ありがとうございます。私は今週末にそれをテストします。 – RayDeeA

+0

内部形式はGL_RGBです。それで、GL_ALPHA、GL_LUMINANCE、GL_LUMINANCE_ALPHA、GL_RGB、GL_RGBAだけが許可されており、それらのすべてが[0,1]にクランプされているとdocが述べているので心配していたのです。 参照:http://www.khronos.org/opengles/sdk/docs/man/under glTexImage2D – RayDeeA

答えて

4

フロートテクスチャには当てはまりません。拡張子のドキュメントを確認してください:

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

それは言及:

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

+0

私はテクスチャタイプとしてGL_OES_texture_floatを使用しようとしましたが、唯一の結果は完全なフレームバッファオブジェクトを別名8cd6にすることができなかったというログでした。 :( – RayDeeA

+0

iOSで浮動小数点数のテクスチャを使用することは間違いありませんが、誰かが助けてくれると思われる場合は、コードを表示する必要があります。 – Tark

+0

あなたは正しいです。これは可能であり、値はまったくクランプされませんが、内部形式としてGL_HALF_FLOAT_OESを使用するだけで動作します。代わりにGL_FLOATを使用すると、不完全なフレームバッファオブジェクトになります。だから、半精度浮動小数点数はiPad2で許されているようです。 もう1つ言及してください: インスツルメントは、「引数 'type'の無効な列挙型」メッセージを報告しますが、とにかく動作します。 ああ、もう1つの厄介なことは、glreadpixelsです。GL_FLOATをフォーマットGL_HALF_FLOAT_OESとして使用すると、異なる浮動小数点数が使用されます。 非常にありがとう! – RayDeeA

1

フロートテクスチャに関するすべてのことは、シェーダでaprox [+ inf、-inf]をサポートすることです。もっと便利な情報がここにあります:render to floating point texture under iOS

+0

ありがとう! :) – RayDeeA

関連する問題