再次实践用c语言来编写webgl

当年asm.js出来的时候,emscripten这个工具链还不是很好用,不,是很难用。

尝试以后,被一个helloworld 好几兆吓退了。

webassembly 如今已经发育的挺成熟了。今天又尝试了一下这套工具链,现在好用多了

而且编译出来的wasm文件尺寸很小

将来可能懒得看,摘重点记录一下

首先装个git 和 python(我装的3.9.2可以)

我只说在windows下面怎么搞

cd emsdk

emsdk install latest

emsdk activate latest

emsdk_env.bat

这么一套,install 是要网络的,他会把所有的东西都安装一套 ,包括gcc

最后的emsdk_env是设置环境变量,这玩意儿每次设烦死人,我建议你设置完把他手动敲进系统里(他会把他设置的环境变量打印出来的)

path里需要加三条

环境变量设置好以后,随便开一个终端 输入 emcc -v可以看到正常了

然后这个例子简单吧,真正的helloworld

emcc 就是用来替代 gcc的一个命令行编译工具,它用来把c语言(cpp也行,半残),编译成wasm

当我们 emcc tt.c –o i.html时,就会产生三个文件 i.wasm i.js i.html

js是胶水js

这里生成的文件很干净,我们只需要用 测试用的live server 就能跑了

跑起来是这样,不要慌,这是 emsdk 帮你给的调试环境,可以用命令行去掉

现在的Oz就很给力了, Oz 是尺寸优化,后面两个是关掉调试多出来的东西,只跑一个干净的html

emsdk 封装的很好

你可以看看这个例子

编译比较复杂

我专门写了个bat来处理

他倒是提供了一个工具 emmake,依赖make,在windows下很难用,我宁愿写批处理

这个webgl的基本例子,不加各种优化参数wasm 24k,胶水117k

加上各种参数 则 wasm 17k 胶水 5k

这个尺寸已经可以实用了

Original: https://www.cnblogs.com/crazylights/p/16538609.html
Author: 疯光无线
Title: 再次实践用c语言来编写webgl

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536587/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • c语言获取cpu数量

    1、在Linux下获取CPU核数 linux下可以通过linux系统提供的sysconf()来获取当前CPU个数,sysconf在头文件unistd.h中声明。 sysconf函数…

    C语言 2023年5月29日
    086
  • 文件加密的简单实现(C语言)

    需求:以DWORD为单位对文件进行加密,将每个DWORD与0xfcba0000做异或,写入另一个文件 解答: #include #include #define DWORD uns…

    C语言 2023年5月29日
    078
  • 遗传算法的C语言实现(二)—–以求解TSP问题为例

    上一次我们使用遗传算法求解了一个较为复杂的多元非线性函数的极值问题,也基本了解了遗传算法的实现基本步骤。这一次,我再以经典的TSP问题为例,更加深入地说明遗传算法中选择、交叉、变异…

    C语言 2023年5月29日
    065
  • C语言结构联合位字段知识体系总结大学霸IT达人

    C语言结构联合位字段知识体系总结大学霸IT达人 C语言的基础类型中只能去定义单一类型的变量用于指代数据,但在现实生活中我们常常要处理的数据却会包含多种类型的数据。 例如,公司员工的…

    C语言 2023年5月29日
    045
  • 互联网世界中的C语言——我的golang学习笔记:1(基础语法快速过)

    wangyishuaideMacBook-Pro:goStu wangyishuai$ rm hello wangyishuaideMacBook-Pro:goStu wangyi…

    C语言 2023年5月29日
    088
  • c语言中gets ,getschar 和fgets 的用法及三者之间的差别,还有scanf

    ① gets——从标准输入接收一串字符,遇到’\n’时结束,但不接收’\n’,把 ‘\n’留存输入缓冲区;把…

    C语言 2023年5月29日
    062
  • C语言声明知识体系总结大学霸IT达人

    C语言声明知识体系总结大学霸IT达人 声明(declaration)决定一个或多个标识符的重要性和属性。所声明的标识符可以是对象的名称、函数的名称等。 对象和函数的标识符可以有各式…

    C语言 2023年5月29日
    064
  • 一道C语言安全编码题目

    1、前言 最近在网上看到一道C语言题目,用C语言实现一个函数,给定一个int类型的整数,函数输出逆序的整数,例如输入123,则输出字符串”321″,,输入-…

    C语言 2023年5月29日
    053
  • JavaSE 可变参数的方法重载

    1 /** 2 * 可变参数的方法重载 3 */ 4 class A { 5 public void test(int a, int b) { 6 System.out.print…

    C语言 2023年5月29日
    075
  • C#传委托给C语言的函数指针调用问题

    C代码如下: 多次验证发现在C#中传委托给C中的函数指针,如果委托不带参数则都能成功运行,但是委托一带参数不管是int参数还是string参数或者其他参数,都会报” 尝…

    C语言 2023年5月29日
    072
  • C语言:结构体和共用体

    这是很基础的教程,我只是写给自己看,作为一个学习笔记记录一下,如果正在阅读的你觉得简单,请不要批评,可以关掉选择离开 如何学好一门编程语言 掌握基础知识,为将来进一步学习打下良好的…

    C语言 2023年5月29日
    0100
  • C语言-转

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/JohnABC/p/8458883.htmlAuthor…

    C语言 2023年5月29日
    054
  • 记C语言浮点数运算处理 “坑” 一则

    看一小段C语言程序: 在你心目中, 变量 I 是怎样的结果? 如果你理所当然地认为是3的话, 那么你就错了~~~ 实际结果应该是2. 为什么? 简而言之, x在内存的值并不是精确的…

    C语言 2023年5月29日
    034
  • C语言的原码,反码,补码

    1)原码表示 原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。 例如,X1= +1010…

    C语言 2023年5月29日
    078
  • Crystal 软件学堂:每周一练【C语言】

    由于新申请的公众号已经没有留言功能了,所以如果有疑问,可以在公众号私聊我,也可以在博客园留言还可以加入QQ交流群。 今天的题目很有意思,值得一看哦,查看链接,请点击: Crysta…

    C语言 2023年5月29日
    066
  • C语言实现简易log工具

    0x0 目的 0x1 不用 cout 0x2 不直接用 printf 0x3 用宏实现,而不用函数实现 0x4 简易实现 0x41 最简实现 0x42 打印行号、文件名、自动换行 …

    C语言 2023年5月29日
    057
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球