- 博客(323)
- 资源 (1)
- 收藏
- 关注
原创 WebGL着色器语言中各个变量的作用
WebGL中内置了一些预定义的特殊变量,如gl_Position在顶点着色器中表示顶点位置和gl_FragColor在片元着色器中表示片元颜色。//顶点着色器程序//片元着色器程序//设置颜色}`
2024-10-10 14:02:58
452
原创 颜色与纹理
例如:一条线段一个端点为红色(1.0,0.0,0.0),另一个端点为蓝色(0.0,0.0,1.0),我们在顶点着色器中向varying变量v_Color赋上这两个颜色,WebGL系统会自动计算出线段上的所有点的颜色,并赋值给片元着色器中的varying变量v_Color。示例程序:根据片元的位置,来确定片元的颜色。因此,顶点着色器赋给v_Color变量的值被传递给了片元着色器中的v_Color变量,然后片元着色器将v_Color赋值给gl_FragColor,这样每个顶点的颜色均会被修改。
2024-06-04 16:18:56
945
原创 了解tensorflow.js
的运行过程中,数据没有上传到服务器,所有的运算都是在手机本地,基于手机的 CPU/GPU 完成的,而这项技术,将使 Servreless 与 AI 应用结合起来成为可能。通过这些优势,TensorFlow.js 将给开发者带来极高的灵活性。比如在 Google Creative Lab 在 2018 年 7 月发布的。,然后通过对图片数据库中类似身体动作姿势的检索,给用户显示一个最能够和他当前动作相似的照片。里,我们可以在手机上打开浏览器,通过。手机摄像头检测视频中用户的身体动作姿势。
2024-05-09 19:51:31
427
原创 如何在.a文件中打入版本号
例如:2、将.cpp/.c编译成.a后,将.a拖入到二进制查看文件中,搜索STPlayer Baseline字段,得到其版本号。注意:.a为中间目标程序,没有经过优化的过程。
2024-05-06 11:48:22
206
原创 WebGL高级变换与动画基础
例如,通过调用glTranslate()函数并传入在X,Y,Z轴上的平移距离,就可以创建一个平移矩阵。如果旋转角度值是正值,那么旋转就是逆时针方向的,本例中的旋转是绕Z轴进行的,所以旋转轴设为(0,0,1);类似的,如果是绕X轴旋转,则为(1,0,0)。WebGL没有提供类似的矩阵函数,因此,如果想要使用它们,就得自己编写,或使用别人编好的(开源的)。Matrix4是矩阵库提供的新类型,Matrix4对象表示一个4*4的矩阵,该对象内部使用类型化数组Float32Array来存储矩阵的元素。
2024-04-30 16:47:01
840
原创 WebGL的调试工具
https://www.cnblogs.com/hammerc/p/11199735.html 1、SpectorJSSpectorJS - Explore and Troubleshoot your WebGL scenes with ease2、WebGL Inspector
2024-04-25 10:29:27
707
原创 WebGL绘制和变换三角形
缓冲区对象是WebGL系统中的一块内存区域,我们可以一次性地向缓冲区对象中填充大量的顶点数据,然后将这些数据保存在其中,供顶点着色器使用。gl.vertexAttrib3f()一次只能向顶点着色器传入一个顶点,而绘制三角形、矩形和立方体等,你需要一次性将图形的顶点全部传入顶点着色器。不管三维模型的形状多么复杂,其基本组成部分都是三角形,只不过复杂的模型由更多的三角形构成而已。相应地,gl.deleteBuffer(buffer)函数可用来删除被gl.createBuffer()创建出来的缓冲区对象。
2024-04-19 16:38:22
229
原创 WebGL概述
WebGL标准是由科纳斯组织(Khronos Group)开发和维护,该组织还管理着OpenGL、COLLADA等。WebGL的官方描述:WebGL是免授权费的,跨平台的应用程序接口API。它将OpenGL ES 2.0作为在HTML网页内的3D绘图环境,作为低级别文档对象模型接口开放。它使用OpenGL渲染语言GLSL ES,并可整洁地与其他3D内容上层或下层的网页内容捆绑。它是使用JavaScript编程开发语法开发,适合动态3D网页应用的理想工具,并已被主流互联网浏览器集成。
2024-04-02 11:48:25
1097
原创 ES6中的用模块封装代码
模块是自动运行在严格模式下且没有办法退出运行的JavaScript代码。与共享一切架构不同的是:在模块顶部创建的变量不会自动添加到全局共享作用域,这个变量仅在模块的顶级作用域中存在。模块必须导出一些外部代码可以访问的元素,例如变量或函数。模块也可以从其他模块导入绑定。在模块顶部,this的值是undefined;
2024-03-18 11:46:29
2758
原创 国产化/windows系统查看配置
在计算机右键属性,可以查看到系统(统信UOS、银河麒麟);CPU(x86兆芯、x86海光、ARM鲲鹏、ARM phytium飞腾、LoongArch龙芯、ALPHA神威)在浏览器中输入:chrome://version或se://version。2、查看NVIDIA显卡详细信息/驱动版本等。可以查看CPU/GPU/操作系统等详细信息。简单看下是A卡、N卡、景嘉微等。方案1:在终端中输入top。方案2:使用系统监视器。
2024-03-15 15:39:04
9474
原创 JS中的Promise与异步编程
这个属性不暴露在Promise对象上,所以不能以编程的方式检测Promise的状态,只有当Promise的状态改变时,通过then()方法来采取特定的行动。readFile()方法被调用时,执行器会立刻执行,在执行器中,无论是调用resolve()还是reject(),都会向任务队列中添加一个任务来解决这个Promise。总结:Promise的执行器是同步任务,会立刻执行,而then和catch是异步任务,会添加到任务队列的尾部,异步执行。回调模式中,被调用的函数是作为参数传入的。
2024-03-11 14:45:06
867
原创 JS中的函数
JavaScript函数有一个特别的地方,无论在函数定义中声明了多少形参,都可以传入任意数量的参数,也可以在定义函数时添加针对参数数量的处理逻辑,当已定义的形参无对应的传入参数时,为其指定一个默认值。在函数的命名参数前添加三个点(...)就表明这是一个不定参数,该参数为一个数组,包含着自它之后传入的所有参数,通过这个数组名即可逐一访问里面的参数。在ES5中,下面的代码会抛出语法错误;JS的函数语法规定,无论函数已定义的命名参数有多少,都不限制调用时传入的实际参数数量,调用时总是可以传入任意数量的参数。
2024-03-05 09:38:50
1183
原创 Unicode/ASCII/UTF的关系(模板字面量、模板字符串、占位符)
Unicode是ASCII字符编码的一个扩展,只不过在Windows中,用两个字节对其进行编码,也称为宽字符集(WideChars)。Unicode字符串有多种编码方式,常见的有UTF-8、UTF-16、UTF-32等,这些编码方式定义了如何将Unicode码点映射到字节序列。Unicode是一个更为全面和通用的字符编码标准,允许表示世界上所有语言的字符。ASCII主要是用于英文,是Unicode的一个子集,Unicode的引入解决了多语言环境中字符编码的问题。
2024-02-28 15:58:40
1243
原创 JS中的块级作用域(var/let/const)
当前使用块级绑定的最佳实践是:默认使用const,只在确实需要改变变量时使用let。这样就可以在某种程度上实现代码的不可变,从而防止某些错误的产生。
2024-02-27 15:12:30
1091
原创 ubuntu/国产化开发技巧总结
2、不建议用cp的方式代替ln-s的方式。12. watch gdb的观察点(断点是当程序执行到某一代码行时中断,而观察点是当程序访问某个存储单元时中断,如果我们不知道某个存储单元是在哪里被改动的,这时候观察点尤其有用)例如:watch b (程序执行到b存储单元,将此执行单元执行前后的值都显示出来)1. g++ hello.c -fPIC -c -o hello.o //-c只编译(生成中间同名目标文件,不链接)-o指定输出文件名,该文件为可执行文件,不加-o会默认生成.out。
2024-01-16 14:42:36
1192
原创 JavaScript和C/C++对比
傻傻分不清:JIT编译器,解释器,AOT编译器-腾讯云开发者社区-腾讯云V8引擎介绍:详解 Chrome 「V8 」引擎,让你更懂JavaScript ! - 知乎
2023-12-19 20:42:54
458
原创 C++性能优化-内存拷贝操作
如果要复制的数据很大,比如说需要复制 1GB 的数据,那么 CPU 就需要从源内存地址中读取 1GB 的数据,并将数据写入到目标内存地址中,这个过程中会占用一定的 CPU 时间和带宽。C++ 中的内存拷贝是一种常见的操作,但是如果内存拷贝的数据较大或者频率较高,会导致性能下降。使用基于 DMA(直接内存访问) 的内存拷贝技术,将内存拷贝的处理交给硬件设备,减少 CPU 的参与,提高拷贝效率。总之,合理的内存拷贝方式可以有效提高程序的性能,减少 CPU 的负担,提高用户体验。
2023-12-15 16:14:05
1137
原创 WebAssembly如何获得安全性
然后框架访问内存,并代表代码执行这个项目。在C++中,执行栈与线性内存一起位于内存中,虽然C++代码不应该修改执行栈,但是它可以使用指针实现修改。WebAssembly的执行栈与线性内存是分离的,代码无法访问。WebAssembly是第一个共享JavaScript VM的语言,而JavaScript VM在运行时是沙箱化的,同时经历了多年的检验和安全测试,确保了其安全性。WebAssembly模块的可访问范围不超过JavaScript的访问范围,同时也会遵守相同的安全性规则,包括同源策略这样的增强规则。
2023-12-14 19:24:09
547
原创 现代浏览器提供的多媒体相关的API
MediaStreamTrackProcessor 接口是 MediaStreamTrack API 的一个扩展,使用 MediaStreamTrackProcessor,可以轻松地对音视频流数据进行修改、过滤、处理等操作。方法返回一个 promise,该promise可以暂停代码执行,直到用户选择文件并执行操作。是 WebAPI 中的一个方法,可用于显示本地文件保存框,让用户保存一个文件。该方法可以在不需要服务器干预的情况下,向本地系统写入文件,同时保留浏览器的独立性。在非安全上下文中调用此方法会抛出。
2023-11-23 15:47:17
1405
翻译 Canvas2D
在着色器、网格和滤镜的世界中,Canvas2D 可能不会让您兴奋。不可否认,在最先进的 2D 绘图方面,API 有点落后于时代。幸运的是,我们一直在努力在 Canvas2D 中实现新功能,以赶上 CSS、简化人体工程学并提高性能。
2023-11-17 17:16:35
245
翻译 从WebGL到WebGPU
1、Chrome和safari最多同时使用16个WebGL画布,Firefox最多可创建200个,而WebGPU画布没有限制。2、WebGPU可以共享纹理,将 GPUDevice 对象输出到任意数量的画布。
2023-11-16 14:52:35
641
原创 WebAssembly
WABT是一个Wasm二进制工具箱(WebAssembly Binary Toolkit),提供了很多处理Wasm二进制格式的工具,包括WAT汇编器wat2wasm、反汇编器wasm2wat、Wasm二进制格式查看工具wasm-objdump、二进制格式验证工具wasm-validate等。使用汇编器可以把文本格式编译成二进制格式,使用反汇编器可以把二进制格式反编译成文本格式。二进制格式是Wasm模块的主要编码格式,存储为文件时,一般以.wasm为后缀。可以由开发者直接编写,也可以由二进制格式反编译生成。
2023-09-25 10:17:16
341
1
转载 C/C++中的内存对齐
第二个结构体中变量i占用内存最大占4字节,而有效对齐单位也为4字节,两者较小值就是4字节。因此整体也是按照4字节对齐。由规则1得到s2占9个字节,此处再按照规则2进行整体的4字节对齐,所以整个结构体占用12个字节。3.编译器可以设置一个最大对齐值,怎么类型的实际对齐值是该类型的对齐值与默认对齐值取最小值得来。1.基本类型的对齐值就是其sizeof值;2.结构体的对齐值是其成员的最大对齐值;相对于结构体首地址的偏移要为4的倍数。
2023-03-27 14:43:35
264
原创 如何快速统计一个文件夹中的文件名
2、在txt文件中输入 DIR *.*/B>LIST.TXT (DIR命令后须有一空格)4、双击该文件即可生成。运行结构在LIST.TXT文件中。1、在该文件夹中新建txt文件。3、保存后将后缀名改为BAT。
2023-03-21 11:30:53
2009
原创 mpegts开源项目预研
package-lock.json 的作用是锁定依赖结构,即只要你目录下有 package-lock.json 文件,那么你每次执行 npm install 后生成的 node_modules 目录结构一定是完全相同的。使用建议: 开发系统应用时,建议把 package-lock.json 文件提交到代码版本仓库,从而保证所有团队开发者以及 CI 环节可以在执行 npm install 时安装的依赖版本都是一致的。npm 的版本更新,解决了旧版本中node_mudules。
2023-03-13 10:01:46
570
原创 webworker(DedicatedWorker, SharedWorker, )
你所要做的就是调用 Worker() 构造函数,指定一个要在 worker 线程内运行的脚本的 URI,如果你希望能够收到 worker 的通知,可以将 worker 的 onmessage 属性设置成一个特定的事件处理函数。worker应该访问此事件的ports属性来提取一个稳定的通信端口回浏览器,并在worker的生命周期内持久化它。和现有的HTML5数据缓存功能有很大的不同,service worker的离线能力是可编程的。一个普通的web worker只能被创建它的页面访问。
2023-03-09 19:31:51
1021
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人