2012-03-12 17 views
0

私のシェーダはintをfloatに暗黙にキャストします。その結果、C7011の警告が発生します。GLSLで警告を抑制する方法はありますか?

int i = 1; 
float f = i; 

この警告は気にせず、決して気にしません。しかし、私のシェーダをデバッグしようとすると、私はエラーを見つけるためにこれらの警告の束を歩かなければなりません。これらの警告を抑制する方法はありますか?

#pragmaのオプションを検索しようとしましたが、何も見つかりませんでした。

ありがとうございます。

+0

'float f =(float)i;'を試したことがありますか? –

+1

@dark_charlie:これはGLSLであり、Cではありません.GLSLでは動作しません。 –

+0

@NicolBolas HLSLでもうまく動作します.GLSLでもうまくいくと思いました。 –

答えて

2

これが役立つかどうかは不明ですが、使用しているglslのバージョンのクイックリファレンスを確認してください。にある4.20 GLSLクイックリファレンスシートの7ページによると、float f = float(i)と一緒に行くことができると思われますが、私は現在のテストでコンピュータ上にないと思っています。

これが機能しない場合は、同じリファレンスシートの9ページにあるintBitsToFloat関数を参照してください。バージョン3.3以降のglslにのみ存在しますが、そのバージョン以上を使用している場合は、必要な変換が得られます。

+0

'float(f)'が動作します。ありがとう。文法的に醜いやり方があることを期待していました。 浮動小数点数型int型の場合、精度が低下しますが、int型浮動小数点型の場合、ダイナミックレンジのわずかな損失は、コンパイラが不平を言ってはいけないもののようです。 私はそれが事態であると思います。 – sharoz

関連する問題