2015-10-21 6 views
9

私のコードは、(無効メインの内側)である:私はちょうどi/15.0を書く場合intをGLSL(WebGL)で浮動小数点にキャストする方法は?

float res; 

for(int i=0; i<15; i++) { 

    res = float(i)/15.0; 

    //... 

} 

は、残念ながら私はfloat(i)/15.0

で構文エラーを取得し、エラーがある:

wrong operand types no operation '/' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'const float' (or there is no acceptable conversion) 

の場合私はちょうどi/15を試して、結果は整数ですが、私はフロートを取得したいと思います。

キャストはどのように可能ですかintからfloat

+0

この変換は自動的に行われます - res = i/15; – jeff

+0

これはGLSLであり、JavaScriptではありません。 –

+1

私は[上のコードをglslsandbox.comに貼り付けて、うまく動作します](http://glslsandbox.com/e#28445.0)。シェーダの別の行からそのエラーを受け取っていないと確信していますか? – gman

答えて

11

It seems GLSLでのキャストは許可されていません。したがって、"あなたはa constructor"を使用する必要があります。

これを試してみてください:

// http://www.shaderific.com/glsl-types/ 
// "Implicit type conversions are not supported. 
// Type conversions can be done using constructors..." 
float i_float = float(i); 
res = i_float/15.0; 

PSを:あなたが見 at the documentationを持っている場合、それは言うこと 」...整数型のどちらかが山車に変換することができ、かつ整数と浮動小数点数は倍精度に変換することができます" ...あなたのコードがGLSLコンパイラによって受け入れられないことは奇妙なことです。 (cf. Reto Koradiのコメント参照)

+0

あなたは完全なGLSLのドキュメントを見ています。 WebGLで使用されるGLSLバージョンは、暗黙の型変換をサポートしないGLSL ES 1.00(OpenGL ES 2.0に準拠するGLSLバージョン)に基づいています。 –

+0

それを指摘してくれてありがとう。私は新しいリファレンスを追加しました:http://www.shaderific.com/glsl-types/ – 865719

+0

何らかの理由で構文エラーが発生しました: 'シェーダのコンパイル中にエラーが発生しました:ERROR:0:33: '1.0':構文エラー' –

関連する問題