首页 > 其他分享 >web assembly 初体验

web assembly 初体验

时间:2024-10-20 20:34:46浏览次数:1  
标签:__ web 初体验 assembly Web void game emscripten loop

License: CC BY-NC-SA 4.0

我写了一个程序,可以在各个平台运行吗?

可以,用跨平台库。

如何做到“不用下载,点击即玩”呢?

做成网页。

但是它已经用 c/cpp(或其他编程语言,此处用 c/cpp 举例)写完了……

Web Assembly,启动!

Web Assembly 是什么

这是一段介绍

省流:

WebAssembly 是一种新的编码方式,可以在现代的 Web 浏览器中运行——它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C/C++、C# 和 Rust 等语言提供编译目标,以便它们可以在 Web 上运行。

如何将 c/cpp 代码编译为 Web Assembly

emscripten 是一个类似 clang 的编译工具链,支持 SDL 等库。

这里是 SDL Wiki 对于 emscripten 支持的一段介绍,总结了一下大概就是下面两点:

  1. 文件开头 include 所需的库。

    #ifdef __EMSCRIPTEN__
    #include <emscripten.h>
    #endif
    
  2. 写一个 main loop,但不要真的 loop 了。

    extern bool game_is_still_running;
    
    static void mainloop(void)   /* this will run often, possibly at the monitor's refresh rate */
    {
    	if (!game_is_still_running) {
    		// deinitialize_the_game();
    		#ifdef __EMSCRIPTEN__
    		emscripten_cancel_main_loop();  /* this should "kill" the app. */
    		#else
    		exit(0);
    		#endif
    	}
    
    	// check_for_new_input();
    	// think_about_stuff();
    	// draw_the_next_frame();
    }
    
    void main(void)
    {
    	// initialize_the_game();
    	#ifdef __EMSCRIPTEN__
    	emscripten_set_main_loop(mainloop, 0, 1);
    	#else
    	while (1) { mainloop(); }
    	#endif
    }
    

编译使用 emcc foo.c 即可。

下面是一些踩坑/注意事项/提醒。

  • 用 emscripten 编译 SDL 程序时要带 -sUSE_SDL=2 参数,首次运行时会从 github 上下载 SDL2 的相关资源,如果网不好可能要等几分钟然后随机断连
  • 加入 -o index.html 参数可以直接输出网页,但输出的网页不能直接打开。
    • 如果尝试直接打开可能会一直在加载中。
    • 正确的方法是搭一个本地测试服务器,可以看这里
    • 省流:进入 index.html 所在的文件夹,然后 python3 -m http.server.

标签:__,web,初体验,assembly,Web,void,game,emscripten,loop
From: https://www.cnblogs.com/x383494/p/18487827

相关文章

  • 黑马JavaWeb-day01
    Web:全球广域网,也称为万维网(wwwWorldWideWeb),能够通过浏览器访问的网站。web网站的工作流程:网页由哪些部分组成:文字、图片、音频、视频、超链接我们看到的网页背后的本质:前端代码前端代码是如何转化成用户眼中的网页?:通过浏览器的解析和渲染转化成用户看到的网页,浏览器......
  • 重构案例:将纯HTML/JS项目迁移到Webpack
    我们已经了解了许多关于Webpack的知识,但要完全熟练掌握它并非易事。一个很好的学习方法是通过实际项目练习。当我们对Webpack的配置有了足够的理解后,就可以尝试重构一些项目。本次我选择了一个纯HTML/JS的PC项目进行重构,项目位于GitHub上,非常感谢该项目的贡献者。重构案例......
  • 新生web环境搭建与学习
    学web的话,一些工具和环境的搭建是必不可少的,搭建这些基本环境可参考以下几篇文章,也可以自己搜1、bp安装(在这之前把java环境配好,下面这个文章中有教程)https://blog.csdn.net/qq_59344199/article/details/1280226802、蚁剑安装https://blog.csdn.net/weixin_42474304/article/d......
  • 攻防世界-web-PHP2
    题目名称:PHP2进入场景翻译:你能访问这个网站吗?扫描一下后台文件(使用的是御剑后台扫描工具,下载链接:https://pan.baidu.com/s/107kRyYGDlBwKQxik3bCqeg提取码:ygxt)访问php时没有回显 这涉及到phps的知识phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码......
  • 基于nodejs+vue基于web的青少年编程课程评价系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于青少年编程课程评价的研究,现有研究主要以传统课程评价为主,专门针对青少年编程课程这一新兴教育领域的评价研究较少。在国内外,传统课程评价体系已经......
  • 基于nodejs+vue基于Web的软考题库平台[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于软考相关平台的研究,现有研究主要以软考知识体系、软考备考策略等为主。专门针对基于Web的软考题库平台的研究较少。在软考的普及过程中,虽然有一些软......
  • 基于nodejs+vue基于Web的社区垃圾分类管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于基于web的图书网站的研究,现有研究主要以传统图书管理系统或大型电商网站为主。专门针对基于web的图书网站,尤其是聚焦于用户、图书分类、图书信息等......
  • 基于nodejs+vue基于web的图书网站[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于基于web的图书网站的研究,现有研究主要以传统图书管理系统或大型电商网站为主。专门针对基于web的图书网站,尤其是聚焦于用户、图书分类、图书信息等......
  • WebGPU与WebXR
    目录WebXR应用集成WebXR应用集成在Web平台上,WebGPU和WebXR结合可以为AR/VR应用开发提供强大的技术支持。WebGPU提供了底层的图形和计算能力,而WebXR则专注于扩展Web平台以支持增强现实(AR)和虚拟现实(VR)体验。以下是开发WebXR应用时集成WebGPU的基础步骤和概念:1.......
  • WebRTC工作原理
    目录基本架构工作原理实时适应与优化音视频同步低延迟与即时通信未来发展趋势基本架构应用层(ApplicationLayer):这是开发者直接操作的层面,包括JavaScriptAPI,如getUserMedia用于访问媒体设备,RTCPeerConnection用于建立P2P连接,以及RTCDataChannel用于传输任意数据。浏......