jjzjj

emscripten

全部标签

c++ - 在哪里放置 emscripten 和 CMake 的库

当我想在“普通”程序中使用库时,我使用apt安装它们apt-getinstalllibjsoncpp-devapt-getinstalllibassimp-dev然后在CMakeLists.txt中查找FIND_LIBRARYFIND_LIBRARY(JSONCPP_LIBRARYNAMESjsoncpp)TARGET_LINK_LIBRARIES(hello${JSONCPP_LIBRARY})FIND_LIBRARY(ASSIMP_LIBRARYNAMESassimp)TARGET_LINK_LIBRARIES(hello${ASSIMP_LIBRARY})当使用emscripte

javascript - 省略一些 C++ 子系统

我注意到使用emscripten,即使是相对较小的C++文件也可以快速转换为相当大的JavaScript文件。示例:#includeintmain(intargc,char**argv){std::shared_ptrsp(newint);}使用像这样的命令用最近的emsdk编译它em++-std=c++11-sDISABLE_EXCEPTION_CATCHING=1-sNO_FILESYSTEM=1\-sNO_BROWSER=1-sNO_EXIT_RUNTIME=1-O3-ofoo.jsfoo.cc生成的文件超过400k。使用-g我可以做到grep-n'^function_'foo.

javascript - 如何检查 Firefox 是否使用 asm.js 代码?

那么我如何检查它是通过Google的V8引擎像普通Javascript一样执行还是使用汇编以接近native的性能执行? 最佳答案 如果你只看控制台,Firefox会告诉你你的asm.js是否通过验证。对于上面粘贴的脚本,我得到:TypeError:asm.jstypeerror:non-expression-statementcallmustbecoercedtest.html:23这表明不是。本例中的第23行是:return+sqrt(square(x)+square(y));如果我用这个替换那行:return+sqrt(+sq

javascript - emscripten 代码缺乏巨大的性能

现在是凌晨2:50,在忙碌了一天之后,我发现了一些奇怪的东西。我尽力描述我的问题。我用C++和JavaScript写了这两段代码:#include#includeintmain(){clock_ttStart=clock();intresult=0;for(inta=0;a和:varstart=newDate().getTime();varresult=0;for(vara=0;a他们两个做同样的事情(我希望如此)使用最新版本的emscripten生成./a.out.js后,我发现了一些奇怪的东西:emscripten代码的执行时间确实比手动编写的JavaScript代码慢。有什么问题

javascript - 如何通过 emscripten 在 C++ 和 javascript 之间传递字符串

我正在学习emscripten,但在C++和JS之间传递字符串时,我什至无法进行最基本的字符串操作。例如,我想写一个字符串长度函数。在C++中:extern"C"intstringLen(std::stringp){returnp.length();}从javascript调用为:varlen=_stringLen("hi.");这对我产生了0。我如何使这项工作按预期进行?我应该在这里使用哪种字符串类型?字符常量*?std::wstring?标准::字符串?似乎都不起作用;我总是得到非常随机的值。这只是开始...然后如何从C++中返回一个字符串?extern"C"char*string

在Emscripten和QT之间共享OpenGL代码

我想在基于emscripten的前端(webgl2akagles3.0)和我的QT前端(OGL3.3)之间共享渲染代码(如果可行的话,但也不介意GLES3.0)。两者都使用完全相同的GL-Calls,因此我想将所有呼叫移动到从前端调用的辅助功能。问题是要便携,我想从GLES3/gl3.h在emscripten-part中,使用QOpenGLFunctions在qt-part(或其他同样便携的解决方案)中:guiwrapper.cpp:#includevoiddrawStuff(){glDrawArrays(...);//takenfrom}emscripten.cpp:#includevoid

iOS Safari 和 chrome 上的 Javascript Canvas 缓冲区/性能低下

我正在尝试通过将像素直接绘制到imageData缓冲区来更新javascriptCanvas。基本上我会在每次mousemove/touchmove事件后更新imageData缓冲区上的所有像素,并尝试获得最佳性能。背景:我正在开发一个基于emscripten的应用程序,其中Canvas上的绘图完全由“native”代码逐像素绘制。我在这个问题中给出的例子是我重现我的问题的一个更简单的例子。我目前遇到了两个性能问题:在iOSsafari上(在iPadair上测试):绘图函数以31fps的速度调用,但屏幕上的Canvas渲染延迟(视觉上,我会说它以最大10fps的速度更新,加上一些间隔0

Emscripten + CMakeLists.txt 将 C++ 项目编译成 WebAssembly(.wasm)/js,并编译 Html 测试

背景:Web端需要使用已有的C++库(使用CMake编译),需要将C++项目编译成WebAssembly(.wasm)供js调用。上篇文章《Mac上安装Emscripten》已讲解如何安装配置Emscripten环境。本篇文章主要讲解如何将基于CMakeLists配置的C++项目编译成WebAssembly库来供Web前端使用。编译结果会生成.wasm、.js,测试代码会生成.wasm、.js、.html。一、构建基于CMakeList的C++库及测试Demo工程目录结构如下:比如test_lib就是我们原有的C++库,这里测试简单写了个数学库,包含加法函数和减法函数。我们最终需要提供libt

c++ - OpenGL 和 WebGL 之间的 Alpha 渲染差异

我正在使用完全相同的C++代码渲染相同的场景,一次是在Windows上使用原生OpenGL,一次是使用Emscripten到WebGL。场景中的一切看起来都完全一样,除了当我用alpha!=1.0渲染某些东西时。差异如下所示:蓝色立方体的颜色是(0.0,0.0,1.0,0.5)用于渲染立方体的着色器除了绘制颜色外什么都不做。右边是它在OpenGL中的样子,也是预期的结果,只是蓝色,半透明。左边是使用Emscripten+WebGL时的样子。看起来渲染的颜色实际上是(0.5,0.5,1.0,0.5)我使用的混合函数是标准的:glBlendFunc(GL_SRC_ALPHA,GL_ONE_

javascript - 使用 Emscripten Worker API 传输数据而不复制

有没有办法让Emscripten在网络worker和主UI线程之间传输而不是复制数据?Emscripten有一个APIthatmanagescommunicationbetweenWebWorkers,我相信它只使用postMessage/onmessage引擎盖下的机制。在源代码中查找EmscriptenWorkerAPI,似乎它在调用postMessage时没有使用transferList选项,因此数据被复制。实际上,我认为它至少被复制了两次:首先是在线程之间被浏览器复制,然后是secondtimebyEmscripten。将其放入Emscripten管理的堆空间。而如果你想让回调