jjzjj

javascript - 使用干净的 JavaScript 堆配置文件长时间运行的 THREE.js 应用程序中的 GPU 崩溃

我们长期运行的THREE.js应用程序(24/7)在使用几天后崩溃了。我将模拟用户交互的压力测试放在一起,这些测试处于while(true)循环中,这些似乎需要3到4天才能因WebGL_Context_Lost事件,通常表示GPU进程崩溃。我精通ChromeDevToolsHeapprofiler,并且运行了无数次测试,所有测试都在每次模拟之间没有留下任何对象(与上述相同的模拟)。这是其中一个仅显示系统对象的屏幕截图(忽略第一个快照的大小):JavaScript内存和GPU内存在Chrome任务管理器中都在攀升,但稳定下来(我觉得GC被推迟了,因为这些操作太频繁了)。没有连续攀升至崩溃

javascript - WebGL:优化每帧更改值和顶点计数的顶点缓冲区

我想实现一个带有顶点缓冲区的渲染器,每帧都会在应用程序端更新。此外,顶点的数量(即三Angular形的数量)也会在每一帧发生变化。我的方法是将所需的最大值预先分配为Float32Array,然后仅更新更改的值,并使用bufferSubData更新缓冲区数据。然后通过从索引缓冲区发送一个范围来绘制我想要的。作为一个最小的例子,假设我已经为Float32Array中的2个单独的三Angular形分配了位置顶点,对于这个帧,我只想移动并绘制第二个三Angular形。我想我会这样做:arrPos[9]+=1.0;//movetheXcoordinatesintheFloat32Arrayarr

javascript - 如何检查 webgl(three.js) 的客户端性能

我有一个使用three.JS的图形项目,现在我想自动检查客户端GPU性能并计算我可以在应用程序中加载多少元素。我想到了GPU基准测试之类的东西。 最佳答案 看看stats.js,thisTHREEXplugin和webglinspector. 关于javascript-如何检查webgl(three.js)的客户端性能,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2317877

javascript - 如何实现这种运动模糊着色器效果?

我尝试创建类似此链接底部页面上的雪效果http://blog.edankwan.com/post/my-first-christmas-experiment.其他一切正常但无法使运动模糊效果起作用。有任何想法吗?用于实现运动模糊效果的纹理Sprite代码如下:(function(global){varimg='https://i.imgur.com/hlmsgWA.png'varrenderer,scene,cameravarw=800,h=320varuniformsvargeometryvartexture,materialvarguivarconf={amount:200,spe

javascript - WebGL - 顶点着色器调用的变量数组大小

上下文我正在尝试在Canvas中绘制贝塞尔曲线。我实现了从着色器中绘制二次和三次曲线,但到目前为止我确实为每个控制点设置了统一变量。因此,我在Canvas上单击,添加点,当我有足够的点(分别为3和4)时,我绘制曲线。现在我正在尝试概括贝塞尔曲线。虽然我在JavaScript端实现了这一点,但我觉得从着色器端完成它会更好,因为渲染速度会大大提高。因此,我想在至少有两个点后立即绘制曲线。但我可以继续添加点并使用每个点绘制曲线,以作为控制点。解释所以我知道在GLSL中设置动态数组是不可能的,但是是否可以基于JS变量动态声明GLSL数组?如果我的问题不清楚(我知道我很难马上表述清楚),让我用一

javascript - Collada 到 JSON

我尝试使用WebGL和Three.js显示一些Collada文件。我尝试使用THREE.ColladaLoader()但它返回了一些Material错误。我发现可以将文件转换为JSON,然后将其导入WebGL。我环顾四周,但没有任何解决方案...有什么线索吗? 最佳答案 COLLADA2Json可能是您正在寻找的。编辑:gltf现在是一个标准。(Json+二进制)。转换器在这里:https://github.com/KhronosGroup/collada2gltf 关于javascri

javascript - Three.js: Resize rendering canvas (GPU hungry fragment shader)

我正在使用three.js运行资源匮乏的片段着色器。我已将渲染大小设置为800*600,以保持着色器即使在低端卡上也能流畅运行。我正在这样设置我的渲染Canvas:varcanvas1=document.getElementById('canvas1');renderer=newTHREE.WebGLRenderer(canvas1);renderer.setSize(800,600);renderer.autoClear=false;document.body.appendChild(renderer.domElement);在body元素上我有然后我在cssheader中做widt

javascript - 在 WebGL 中制作球体旋转

不确定我在这里遗漏了什么。试图通过让用户单击“旋转”按钮来使行星(即球体)旋转,但似乎无法弄清楚。我确实有以下部分通过用户与鼠标的交互来旋转球体:document.onmousemove=function(){if(!mouseDown){return;}varnewX=event.clientX;varnewY=event.clientY;vardeltaX=newX-lastMouseXvarnewRotationMatrix=mat4.create();mat4.identity(newRotationMatrix);mat4.rotate(newRotationMatrix,d

javascript - 推荐使用 WebGL 的 API 和 IDE

我将在一个学术项目中使用WebGl来预览给定格式的一些2d和3d模型。在阅读一些文档时,我想根据您的经验了解什么是加速开发和抽象一些低级调用的最佳API,以及与之配合使用的最佳IDE。跨浏览器兼容性不是主要问题。我决定使用WebGl,因为我想为我的项目创建一个Web界面来帮助分享我的进度。你甚至推荐为此使用WebGl吗? 最佳答案 归根结底,IDE只能提供一点帮助,您需要付出艰辛的努力,话虽如此,我用于javascript的最佳编辑器是SublimeText和NetbeansIDE然后如前所述,ChromeDevTools是调试的最

javascript - phaser.io 多个 phaser.game 实例

我想在Phaser.io中使用多个newPhaser.Game实例,但是当我创建第二个Phaser.Game对象时,我得到以下错误WebGL:INVALID_OPERATION:uniform2f:location不适用于当前程序这是我使用的HTML代码这是我使用的JavaScript代码newPhaser.Game(700,850,Phaser.AUTO,'player1Holder');newPhaser.Game(700,850,Phaser.AUTO,'player2Holder'); 最佳答案 您目前不能在一个页面中嵌入多