草庐IT

UNPACK_FLIP_Y_WEBGL

全部标签

javascript - 希望在 Javascript/WebGL 中访问 16 位图像数据

我正在尝试从服务器下载16位图像数据并将其推送到WebGL纹理中,而无需浏览器插件。texImage2d将使用:ImageData、HTMLImageElement、HTMLCanvasElement或HTMLVideoElement。我正在寻找一些可以将16位TIFF或类似(hdf5等)图像数据解码为这些对象类型之一的javascript(库或代码示例)。我可以通过使用an加载PNG来实现每channel8位RGB,但这不适用于每channel16位数据,因为没有任何“标准”浏览器支持的图像格式是16位的。 最佳答案 如果合并两个

javascript - 关于 WebGL 的一些问题

我正在学习OpenGL3.3并正在开发我的一个小型游戏引擎。但我探索得越多,感觉离线PC游戏可能有一天会过时。所有游戏都将在浏览器上运行。我也非常有兴趣将所有内容集成到浏览器中,只要它可以利用与任何其他非浏览器游戏相同的优势。经过一些研究后我发现,WebGL运行在HTML5的Canvas上。现在有几个问题,WebGL能否像非浏览产品一样利用PC的同样优势?它完全基于着色器?或者也支持已弃用(我不知道它是否在WebGL中也已弃用)固定功能渲染?由于我正在学习基于着色器的方法,所以我真的不想回到固定功能管道。或者我是否必须使用其他包装器(Copperlich或GLGE)来获得着色器支持?(

javascript - WebGL 中的所有简单函数都去哪儿了?

glBegin/glEnd和使用glVertex逐顶点绘图我可以理解使用数组可以更快。但是glLoadIdentity在哪里?glMultMatrix?glTranslate?glRotate?为什么我们必须自己处理所有矩阵内容? 最佳答案 WebGL是一个OpenES2.0绑定(bind)。OpenGLES2.0(和现代OpenGL3.2+)没有这些弃用的函数,一切都必须在着色器和/或您自己的矩阵库中完成。好在WebGL有很多可用的矩阵库,其中最好/最快的是glMatrix(https://github.com/toji/gl-m

javascript - WebGL 使用 gl-matrix 库 mat4.translate 未运行

我有这段代码:functionsetupWebGL(){gl.clearColor(0.1,0.5,0.1,1.0);gl.clear(gl.COLOR_BUFFER_BIT);gl.viewport(0,0,400,300);mat4.perspective(45,400/300,0.1,100.0,pMatrix);mat4.identity(mvMatrix);mat4.translate(mvMatrix,[0,0,-2.0]);}除了最后一行,代码中的所有内容都运行mat4.translate(mvMatrix,[0,0,-2.0]);我知道这一点是因为我在每一行之后都放置了

javascript - 在 WebGL 中将大图像上传到 GPU

如何使用WebGL将大图像上传到GPU而不会卡住浏览器(想想高分辨率天空盒或纹理图集)?起初我想寻找是否有办法让texImage2D异步执行它的操作(将图像上传到GPU是IO-ish,对吧?),但我找不到任何方法。然后我尝试使用texSubImage2D上传适合16毫秒时间窗口的小块(我的目标是60fps)。但是texSubImage2D仅当您传入ArrayBufferView时才采用偏移量和宽度/高度参数-当传入Image对象时,您只能指定偏移量并且它将(我是猜测)上传整个图像。我想象先将图像绘制到Canvas上(将其作为缓冲区获取)与将整个图像上传到GPU一样慢。这是我的意思的一个

javascript - 如何释放和垃圾收集 WebGL 上下文?

我正在为Web和移动设备开发WebGL应用程序。我经常使用硬刷新来测试我的WebGL实现的结果。View尝试后,出现错误:Error:WebGL:Exceeded16liveWebGLcontextsforthisprincipal,losingtheleastrecentlyusedone.这不会出现在新启动的浏览器上,而是在多次刷新网站后出现。我猜WebGL上下文没有正确完成、释放、销毁、清理、释放。我该怎么做?KhronosGroup在此处创建了一个用于释放和垃圾收集WebGL上下文的测试套件:https://www.khronos.org/registry/webgl/sdk/

javascript - 如何知道 Canvas 是普通 Canvas 还是webgl Canvas

如何知道Canvas运行的是“WebGL”还是普通Canvas?通过检查源代码,我发现这两种情况都是Canvas。 最佳答案 这真的取决于你想如何去发现。例如你可以这样调用`getContext'if(someCanvas.getContext("2d")){//It'sa2Dcanvas}elseif(someCanvas.getContext("experimental-webgl")||someCanvas.getContext("webgl")){//It'saWebGLcanvas}不幸的是,如果之前没有人调用过getCo

javascript - JavaScript 中的高效粒子系统? (WebGL)

我正在尝试编写一个程序,对粒子进行一些基本的重力物理模拟。我最初使用标准Javascript图形(具有2d上下文)编写程序,并且我可以通过这种方式获得大约25fpsw/10000粒子。我在WebGL中重写了该工具,因为我假设我可以通过这种方式获得更好的结果。我还使用glMatrix库进行矢量数学运算。但是,通过此实现,我只能获得10000个粒子的大约15fps。我目前是EECS本科生,我有相当多的编程经验,但从未接触过图形,而且我对如何优化Javascript代码一无所知。关于WebGL和Javascript的工作原理,我有很多不明白的地方。使用这些技术时哪些关键组件会影响性能?是否有

javascript - WebGL 何时决定更新显示?

在经典的OpenGL应用程序中,在我们完成渲染一帧之后,我们通常会调用一个非gl方法来将窗口缓冲区“翻转”到我们当前的帧。但我在WebGL中看不到任何相关信息。它是如何工作的? 最佳答案 WebGL始终处于后台缓冲状态,每当您退出事件循环时,浏览器会将后台缓冲区的当前内容推送到前台缓冲区。因此,您可以根据需要执行任意数量的绘图命令,而不必担心向用户显示部分结果。当您退出事件循环时,WebGL将呈现您的更改并清除后备缓冲区。如果您愿意,您也可以像拥有单个缓冲区一样,在创建WebGL上下文时通过传递preserveDrawingBuff

javascript - 在 WebGL 和 three.js 中创建图像变形效果

我正在学习three.js,尝试尝试转换图像。我非常喜欢显示的效果here.我要遵循哪些步骤才能转换与此类似的图像?到目前为止我有://instantiatealoadervarloader=newTHREE.TextureLoader();//loadaresourceloader.load(//resourceURL'clouds.jpg',//Functionwhenresourceisloadedfunction(texture){init(newTHREE.MeshBasicMaterial({map:texture}));},//Functioncalledwhendown