WebGL视图断开页面

WebGL视图断开页面,webgl,elm,Webgl,Elm,我试图使用Graphics.WebGL,但每当我向页面添加一个WebGL元素时,都不会显示任何内容,即使是我先前添加的其他非WebGL元素。我使用的是elm服务器,它的控制台中也没有任何东西表明有什么问题——只有一个空白页;它似乎悄悄地失败了。我已经把webGL代码换成了常规的拼贴,它确实出现了,据我所知,我的其他代码没有任何问题 下面是代码的一些相关部分 main = lift2 signalWrapper buttonSelected.signal frameRateSignal

我试图使用
Graphics.WebGL
,但每当我向页面添加一个WebGL元素时,都不会显示任何内容,即使是我先前添加的其他非WebGL元素。我使用的是
elm服务器
,它的控制台中也没有任何东西表明有什么问题——只有一个空白页;它似乎悄悄地失败了。我已经把webGL代码换成了常规的
拼贴
,它确实出现了,据我所知,我的其他代码没有任何问题

下面是代码的一些相关部分

     main = lift2 signalWrapper buttonSelected.signal frameRateSignal
buttonSelected.signal只跟踪在页面的非webGL部分中单击的按钮。frameRateSignal定义为

frameRateSignal : Signal Float
frameRateSignal = fps 25
glView time = webgl (50, 50) (scene time)
scene : Float -> [Entity]
scene time = [entity vertexShader fragmentShader fullScreenTriangle (uniforms time)]
信号包装器是

 signalWrapper signal time = flow right [buttons signal, glView time]
此时,如果我将
glView time
替换为
collage 500 500[填充红色(rect(50+x)(50+x))]
事情仍然会以人们期望的方式显示和工作<代码>glView定义为

frameRateSignal : Signal Float
frameRateSignal = fps 25
glView time = webgl (50, 50) (scene time)
scene : Float -> [Entity]
scene time = [entity vertexShader fragmentShader fullScreenTriangle (uniforms time)]
场景定义为

frameRateSignal : Signal Float
frameRateSignal = fps 25
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);
     }
 |]
很抱歉,我发布了这么多可能不相关的代码,但我真的不知道从这里可以走到哪里——没有可见的错误消息或任何需要追踪的内容


这是一个。

我查看了您的代码,在编译代码后,我发现浏览器开发控制台记录了一个可用错误:

未捕获异常:错误:0:2:'':未为(浮点)指定精度

片段着色器要求您定义浮点精度。一旦你定义了它

鉴于此错误显示在一个不直观的位置,并且事先没有得到警告,我建议您在上打开一个问题