を使用しようとしています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 time
しcollage 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);
}
|]
無関係な可能性のあるコードを大量に投稿して申し訳ありませんが、ここからどこに行けばよいのかまったくわかりません。目に見えるエラー メッセージや追求すべきことは何もありません。
完全なコードへのリンクは次のとおりです。