再次实践用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语言天天练(三)】typedef具体解释

    引言: typedef与define的不同★★★★★ 1.与#define不同,typedef给出的符号名称仅限于对类型,而不是对值。 2.typedef的解释由编译器,而不是预处…

    C语言 2023年5月29日
    059
  • c语言文件处理 (上课用)

    源文件: include //写函数void writetext(FILE *fw){char str[80];gets(str);while(strcmp(str,”…

    C语言 2023年5月29日
    075
  • C语言字符串操作总结大全

    转:https://www.cnblogs.com/lidabo/p/5225868.html 1)字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n…

    C语言 2023年5月29日
    045
  • C语言指针总结大学霸IT达人

    C语言指针总结大学霸IT达人 C语言的指针是C语言区别其它语言的最主要的特定之一。有了指针,C语言就可以抛开所有束缚,直接对内存中的数据进行操作,这样,不单对数据的操作更加快捷,并…

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

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

    C语言 2023年5月29日
    066
  • C语言getopt()的8个用法

    概况 例子1 例子2 例子3 例子4 例子5 例子6 例子7 例子8 概况 做 CSAPP 的 CacheLab 的第一个门槛是学习使用 getopt() 函数。它是 Linux …

    C语言 2023年5月29日
    091
  • C语言函数知识体系大学霸IT达人

    C语言函数知识体系大学霸IT达人 C语言中的函数会集成一条或多条命令(语句)用于实现指定的一个或多个功能。简单的可以将函数理解为一个工具,例如,锤子。锤子的功能是砸东西,木柄和锤头…

    C语言 2023年5月29日
    062
  • [C语言]排序问题

    有一个文件名为num.txt的文本文件,里面有1千万个随机数,这些数字的大小在0~1亿之间,存储方式如下: 542223223232454345232676575……. 要…

    C语言 2023年5月29日
    048
  • c语言-动态内存分配(上课)

    源程序: include //主菜单void menu(){printf(“\n****\n”);printf(“1. 创建单链表\n&#822…

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

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

    C语言 2023年5月29日
    070
  • C语言初学者代码中的常见错误与瑕疵(23)

    http://bbs.cunix.net/forum.php?mod=viewthread&tid=62&extra=page%3D1 见:C语言初学者代码中的…

    C语言 2023年5月29日
    088
  • c语言获取cpu数量

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

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

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

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

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

    C语言 2023年5月29日
    0118
  • JavaSE assert断言的学习

    在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这…

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

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

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