【问题标题】:WebGL view breaks pageWebGL 视图中断页面
【发布时间】:2014-08-05 05:31:52
【问题描述】:

我正在尝试使用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);
     }
 |]

很抱歉发布了这么多可能不相关的代码,但我真的不知道从哪里开始 - 没有可见的错误消息或任何要追求的东西。

这是link to the full code

【问题讨论】:

    标签: webgl elm


    【解决方案1】:

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

    未捕获的异常:错误:0:2:'':没有为 (float) 指定精度

    片段着色器要求您定义浮点精度。一旦你定义了,your code gives some output

    鉴于此错误显示在不直观的地方并且没有事先警告,我建议您在library's GitHub page 上打开一个问题。

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      相关资源
      最近更新 更多