2

を使用しようとしていますGraphics.WebGLが、webGL 要素をページに追加するたびに、以前に追加した他の非 webGL 要素でさえ何も表示されません。私は を使用しelm-serverていますが、そのコンソールには何か問題があることを示すものは何もありません。空白のページしかありません。静かに失敗したようです。webGL コードを通常の に交換しましたがcollage、これは表示されます。私の知る限り、他のコードに問題はありません。

コードの関連部分の一部を次に示します。

     main = lift2 signalWrapper buttonSelected.signal frameRateSignal

buttonSelected.signal は、ページの非 webGL 部分でクリックされたボタンを追跡するだけです。frameRateSignal は次のように定義されます。

frameRateSignal : Signal Float
frameRateSignal = fps 25

シグナルラッパーは

 signalWrapper signal time = flow right [buttons signal, glView time]

この時点でスワップglView timecollage 500 500 [filled red (rect (50 + x) (50 + x))]ても、期待どおりに動作します。glViewと定義されている

glView time = webgl (50, 50) (scene time)

シーンは次のように定義されます

scene : Float -> [Entity]
scene time = [entity vertexShader fragmentShader fullScreenTriangle (uniforms time)]

そのさまざまなコンポーネントは、

uniforms : Float -> {perspective : Mat4, camera : Mat4 }
 uniforms t = {perspective = makePerspective 45 1 0.01 100 ,
                 camera = makeLookAt (vec3 0 0 5) (vec3 0 0 0) (vec3 0 1 0)
              }

 fullScreenTriangle : [Triangle Vertex]
 fullScreenTriangle =
     let tovo  = vec3 1 1 0
         tovt  = vec3 0 0 0
         tovth = vec3 0 1 0
         ttvo  = vec3 1 0 0
         ttvt  = vec3 0 1 0
         ttvth = vec3 0 0 0
     in
     [
         (makeVertex tovo, makeVertex tovt, makeVertex tovth),
         (makeVertex ttvo, makeVertex ttvt, makeVertex ttvth)
     ]


 --shaders
 vertexShader : Shader { attr | position:Vec3, color:Vec3}
                       { unif | perspective:Mat4, camera:Mat4}
                       {vcolor:Vec3}
 vertexShader = [glsl|

     attribute vec3 position;
     attribute vec3 color;
     uniform mat4 camera;
     uniform mat4 perspective;
     varying vec3 vcolor;

     void main () {

         gl_Position = perspective * camera * vec4(position,1.0);
         vcolor = color;
     }
 |]

 fragmentShader : Shader {} {unif | perspective:Mat4, camera:Mat4} {vcolor:
 fragmentShader = [glsl|

     varying vec3 vcolor;
     void main () {

         gl_FragColor = vec4(vcolor,1.0);
     }
 |]

無関係な可能性のあるコードを大量に投稿して申し訳ありませんが、ここからどこに行けばよいのかまったくわかりません。目に見えるエラー メッセージや追求すべきことは何もありません。

完全なコードへのリンクは次のとおりです

4

1 に答える 1

2

私はあなたのコードを見て、それをコンパイルすると、ブラウザの開発コンソールが使用可能なエラーを記録したことがわかりました:

キャッチされていない例外: エラー: 0:2: '': (float) に精度が指定されていません

フラグメント シェーダーでは、浮動小数点の精度を定義する必要があります。それを定義すると、コードはいくつかの output を提供します

このエラーが直感的でない場所に表示され、事前に警告されていないことを考えると、ライブラリの GitHub ページで問題を開くことをお勧めします。

于 2014-06-16T09:37:47.453 に答える