草庐IT

webgl_interactive_voxelpainter

全部标签

javascript - 什么会导致 requestAnimationFrame 在高效的 webgl 循环中丢帧?

我一直在编写一个javascript演示/测试来学习WebGL。我有一个相当高效的游戏循环结构(根据Chrome开发工具)只需1-2毫秒即可运行。我正在使用requestAnimationFrame来安排循环的运行(因为这显然是执行60fps动画的“正确”方式)。当我查看构建框架的时间轴时,实际的javascript代码很少,但框架的“空闲”部分可以将框架推到30fps线上。FPS计数器显示20-40fps,有很多掉落(几乎像锯齿)。如果我的渲染循环已经是1-2毫秒,而它必须适应16毫秒才能运行60fps,还有什么我可以解释的吗?如果我将循环转换为setTimeout循环,它可以轻松保

javascript - 适合与 D3js 结合的库,以允许绘制到 webgl (2D)

这是我正在尝试做的:http://mbostock.github.com/d3/talk/20111116/iris-splom.html但我想在webgl2d中执行此操作(因为SVG性能非常慢,渲染10kSVG仅已降至12fps)通过快速搜索,我发现了几个webgl-2d库:cocos2d-html5,pixijs,Three.js和webgl-2d(废弃?)它们看起来很简单,但我想做的是数据可视化。cocos和pixijs是2d游戏库。我是webgl和那些库的新手,所以SO方面的专家你们能推荐一下吗?我需要的东西的总结:互动:地block内的矩形选择。单击以选择某些元素。缩放和平移

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 - WebGL - 顶点着色器调用的变量数组大小

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

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 - 将 Interact.js 与 Angular 项目集成

我需要在Angular项目中使用Interact.js提供的功能,例如可拖动、可调整大小等,但我找不到在typescript中导入它的可靠方法。我已经阅读了一些通过将其定义为函数来解决问题的方法,但我只是想知道这是否是正确的方法。 最佳答案 添加了Interactjs团队typedefinition所以你可以使用typescript。使用NPMinstall而不是像这样的单独文件npminstallinteractjs然后常规导入应该可以工作import*asinteractfrom'interactjs';

javascript - WebGL 中高效的 VBO 分配

我正在编写一个通过算法生成几何图形的WebGL应用程序。几何将由4-150个对象组成,每个对象由16到2048个点组成,通过drawElements绘制为TRIANGLE_STRIP。大多数帧的几何图形都是静态的,但需要根据用户输入进行动画处理。在这些框架中,当更新几何时,可以添加或删除点/三Angular形。在程序的生命周期中,还需要添加/删除对象。在此上下文中分配/更新VBO的最有效方法是什么?我很确定我应该使用DYNAMIC_DRAW和bufferSubData来更新每个对象,但是我是否想过度分配一些巨大的VBO(假设每个对象的点数是最坏的情况)并将每个对象定义为偏移量(对象编号

javascript - 使用 GL.points 在 WebGL 中绘制单个像素

我正在处理TavaresWebGLtutorial,并陷入泥泞之中。我想使用GL.points绘制单个像素。我的阵列显然有问题。在FF或ChromeCanary中查看:http://codepen.io/anon/pen/EPJVjK/***Createsaprogram,attachesshaders,linkstheprogram.*@param{WebGLShader[]}shaders.Theshaderstoattach.*/varcreateGLProgram=function(gl,shaders){varprogram=gl.createProgram();for(va