浏览代码

continue to play on shader reload if already playing

Lucas Stadler 10 年之前
父节点
当前提交
c25328316a
共有 1 个文件被更改,包括 7 次插入3 次删除
  1. 7 3
      glsl/raymarching.js

+ 7 - 3
glsl/raymarching.js

@ -253,7 +253,8 @@ void main() {
253 253
  `
254 254
  document.head.appendChild(styleEl);
255 255
  
256
  function TwoTriangles(canvas, fragmentShaderSrc) {
256
  function TwoTriangles(canvas, fragmentShaderSrc, options) {
257
    var options = options || {};
257 258
    var tt = {};
258 259
    tt.canvas = canvas;
259 260
    tt.fragmentShaderSrc = fragmentShaderSrc;
@ -299,7 +300,7 @@ void main() {
299 300
      gl.drawArrays(gl.TRIANGLES, 0, 6);
300 301
    };
301 302
    
302
    tt.playing = false;
303
    tt.playing = options.playing || false;
303 304
    tt.draw = function(timestamp) {
304 305
      if (tt.playing) {
305 306
        requestAnimationFrame(tt.draw);
@ -347,6 +348,9 @@ void main() {
347 348
    };
348 349
    
349 350
    tt.render();
351
    if (tt.playing) {
352
      tt.draw();
353
    }
350 354
    return tt;
351 355
  }
352 356
  
@ -380,7 +384,7 @@ void main() {
380 384
  editor.el.onkeydown = function(ev) {
381 385
    try {
382 386
      if (ev.ctrlKey && ev.keyCode == 13) {
383
        tt = TwoTriangles(canvas, editor.el.value);
387
        tt = TwoTriangles(canvas, editor.el.value, {playing: tt.playing});
384 388
385 389
        sidebarEl.innerHTML = "";
386 390
        sliders = findSliders(tt.fragmentShaderSrc);