自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 收藏
  • 关注

原创 经验/教训/总结/踩坑记录

当着色器中一个变量,表现类似于undefined时(用于大小比较均无反应),要检查其生成过程中是否有矩阵等变量为传入为undefined,导致其也为undefined;

2024-03-21 19:55:44 236

原创 js文件中读取 glsl等格式文件内容以适用vscode、webstorm中的代码提示

【代码】js文件中读取 glsl等格式文件内容以适用vscode、webstorm中的代码提示。

2024-03-08 16:22:36 399

原创 WebGL2 中的遮挡查询

【代码】WebGL2 中的遮挡查询。

2023-06-16 15:07:33 181

原创 SSR原理测试

【代码】SSR原理测试。

2023-05-31 16:52:37 129

原创 从着色器中重建世界坐标

重建世界坐标

2023-05-31 09:06:30 147

原创 THREEjs 中 WebXR使用中的问题

WebXR使用

2022-11-18 15:35:35 659

原创 根据透视相机参数计算投影矩阵

矩阵运算

2022-08-05 13:44:07 470

原创 关于THREEjs 中删除 THREE.RGBFormat 的原因

THREEjs 中删除 THREE.RGBFormat

2022-08-03 17:26:29 514

原创 git 命令

nodejs git使用命令

2022-08-02 17:34:40 83

原创 手动根据相机计算其视锥体的方法

计算Frustum

2022-07-28 19:10:45 370

原创 eval 作用域问题

function test(){ eval('var a = 666;'); console.log(a);//666}test();function test2(){ eval('let a = 666;'); console.log(a);//报错,a未定义}test2();class person{ constructor(name){ this.name = name; this.setAge(); } setAge(){ eval('var a = 7

2022-02-15 16:30:15 358

原创 Threejs的材质中修改属性时需要进行重新编译的属性

一、无需进行重编译的属性material.colormaterial.side二、无需进行重编译的属性material.mapmaterial.vertexColors

2021-07-09 09:18:07 394

原创 js中运算精度丢失问题

https://www.jb51.cc/js/997746.html

2021-05-11 11:03:42 157

原创 Varint编码

https://segmentfault.com/a/1190000020500985?utm_source=tag-newest

2021-05-10 14:53:57 132

原创 js中的 & 与 | 运算

在JavaScript中“&&”和“||bai”是逻辑运算符;“&”和“|”是位运算符。四个运算符主要区别是运算方法不一样:1、JavaScript中的位运算符:“&”运算方法:两个数值的个位分别相与,同时为1才得1,只要一个为0就为0。举个例子:31&2 结果为2理由:31的二进制为11111,2的二进制为10 11111&00010的结果为00010,即2控制台运行结果:2、JavaScript中的位运算符:“|”运算方法:两个位只

2021-01-12 16:42:41 9761

原创 WebGL2 理论基础

见:https://webgl2fundamentals.org/webgl/lessons/zh_cn/

2020-11-17 10:05:28 446

原创 WebGL中使用的OpenGL ES版本

OpenGL 1.0发布时间:1992年1月OpenGL 2.0发布时间 : 2004年 9月7日OpenGL 3.3发布时间 : 2010年 3月11日OpenGL 4.4发布时间 : 2013年 7月23日Vulkan 1.1发布时间: 2018年 3月7日

2020-11-16 17:24:46 754

原创 如何解决深度冲突(Z-fighting),画面闪烁的问题

参考:OpenGL教程:深度测试深度冲突一个很常见的视觉错误会在两个平面或者三角形非常紧密地平行排列在一起时会发生,深度缓冲没有足够的精度来决定两个形状哪个在前面。结果就是这两个形状不断地在切换前后顺序,这会导致很奇怪的花纹。这个现象叫做深度冲突(Z-fighting),因为它看起来像是这两个形状在争夺(Fight)谁该处于顶端。防止深度冲突第一个也是最重要的技巧是永远不要把多个物体摆得太靠近,以至于它们的一些三角形会重叠。通过在两个物体之间设置一个用户无法注意到的偏移值,你可以完全避免这两个物体之

2020-11-05 10:06:57 3851

原创 OpenGL着色器中的坐标系

gl_FragCoord的x和y分量代表了片段的屏幕空间坐标(其中(0, 0)位于左下角)。gl_FragCoord中也包含了一个z分量,它包含了片段真正的深度值。z值就是需要与深度缓冲内容所对比的那个值。

2020-11-04 17:07:34 1300 1

原创 console.log() 输出异常情况

console.log打印出来的内容并不是一定百分百可信的内容。一般对于基本类型number、string、boolean、null、undefined 的输出是可信的。但对于Object 等引用类型来说,则就会出现上述异常打印输出。所以对于一般基本类型的调试,调试时使用console.log来输出内容时,不会存在坑。但调试对象时,最好还是使用打断点(debugger)这样的方式来调试更好。...

2020-09-15 14:18:05 1288

原创 WebGL中顶点数组对象VAO的使用

VAO使用目的:简化缓冲区的绑定过程,即可以减少代码的调用次数,也提升了 WebGL 状态切换的效率。推荐博客:高性能WebGL——使用顶点数组对象 Vertex Array Object

2020-08-18 14:04:26 500

原创 JavaScript中的类型化数组

注:大小中的bytes实际上是Bytes ,就是字节B的意思

2020-08-17 14:55:01 247

原创 js获取一个函数的参数

function aaa(){ console.log(arguments); //[1,2,3]}aaa(1,2,3);

2020-08-12 14:48:21 2153

原创 相对路径绝对化方法

let a = document.creatElement('a');a.href = './相对路径'; //设置相对路径console.log(a.href); //此时输出的内容为绝对路径 http://localhost:63324/myTest/相对路径

2020-08-12 14:20:32 208

原创 js中的数据结构:树、图

树:见https://www.cnblogs.com/padding1015/p/7729988.html图:见https://www.cnblogs.com/xbblogs/p/9931893.html

2020-08-04 16:56:48 217

原创 Threejs性能优化:Instance实例化几何体 和 Merge合并几何体

1.Instance实例化几何体同一个Geometry , 同一个 material ,但可以通过索引轻松控制每一个个体insGeometry = new THREE.BoxBufferGeometry(1, 1, 1);//创建具有多个实例的实例化几何体insMesh = new THREE.InstancedMesh(insGeometry, material, total);//修改位置let transform = new THREE.Object3D();for (let ind

2020-07-31 11:31:48 4922 23

原创 在Threejs中实现沿着一条直线路径运动并伴有转向动画

自己定义的一个类如下:功能:实现传入多个锚点生成一条折线并伴有锚点,getPoint(percent)可以获取折线上任意一点的位置,并获取朝向、是否为锚点等信息。run()方法可以让传入mesh或相机等 在折线上运动 //自定义路径类 class myPath { constructor(array) { //将传进来的数组转换为Vec3集合 let pointsArr = [];

2020-07-27 15:13:48 7236 1

原创 在WebGL中使用纹理

//创建纹理cubeTexture = gl.createTexture(); //加载图片 cubeImage = new Image(); cubeImage.src = "./1.jpg"; cubeImage.onload = function () { handleTextureLoaded(cubeImage, cubeTexture); } function handleTextureLoaded(image, texture) { //将创建的纹理绑定到 TE.

2020-07-17 17:00:06 433

原创 如何愉快地在VS Code中编辑shader代码

1.安装gl-canvas插件2.将shader代码放在.glsl的单独的文件中3.设置gl-canvas插件取消勾选紧凑型格式化4.效果:代码高亮,颜色使用便捷

2020-07-17 11:28:31 2931

原创 出现GL_INVALID_VALUE: Index must be less than MAX_VERTEX_ATTRIBS.警告,并且WebGL绘图异常

警告:⚠[.WebGL-0000018B367DE540] GL_INVALID_VALUE: Index must be less than MAX_VERTEX_ATTRIBS.解决办法:请确认着色器中所有使用到的变量都已完成赋值,如有为赋值变量出现并使用将会出现此条警告

2020-07-16 17:02:46 1457

原创 WebGL使用缓冲区向着色器一次性上传大量数据

WebGL使用缓冲区向着色器上传数据1.建 2.绑 3.写 4.配 5.启 //使用顶点缓冲区上传顶点数据 //1.创建 let vertexBuffer = gl.createBuffer(); //2.绑定 gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); //3.写入数据 let vertices = new Float32Array([ // 前 -1.0, -1.0, 1.0,

2020-07-14 16:39:57 345

原创 WebGL着色器使用

WebGL着色器使用1.编译 2.链接 3.使用 4.绘图第 ① 步:编译着色器1.1着色器源码:let vShader_source = ` attribute vec4 aPosition; uniform mat4 uModelViewMatrix; uniform mat4 uProjectionMatrix; attribute float size; //每个顶点的大小 void main(){ // gl_Pos

2020-07-14 16:30:37 313 1

原创 移动端H5开发注意事项

使用transform属性时,单位中的百分比为本元素的百分比,而非父元素的百分比

2020-04-14 14:21:43 157

原创 Threejs中的异常问题解决

1.THREE.BufferGeometry 无 setAttribute方法经过测试发现Threejs库使用模块引入和使用script标签src引入并不完全一致,使用src引入无setAttribute方法,需改为使用模块引入。...

2020-04-13 01:02:52 3562 6

原创 GLSL中文使用手册

GLSL 中文手册基本类型:类型说明void空类型,即不返回任何值bool布尔类型 true,falseint带符号的整数 signed integerfloat带符号的浮点数 floating scalarvec2, vec3, vec4n维浮点数向量 n-component floating point vectorbvec2, ...

2020-04-12 16:43:31 1322

原创 使用GLSL画一个随着时间颜色渐变的三角形

使用着色器画一个随着时间颜色渐变的三角形效果:代码:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>//窗口大小变化回调void framebuffer_size_callback(GLFWwindow* window, int width, int heig...

2020-04-08 15:26:17 1792

原创 使用 OpenGL 绘制一个简单的三角形

名词解释1.GLFWGLFW是一个专门针对OpenGL的C语言库,提供给我们一个窗口和上下文用来渲染。2.GLADGLAD是用来管理OpenGL的函数指针的。因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并...

2020-04-07 23:40:31 916

原创 CMake 构建GLFW时 could not find any instance of Visual Studio

解决办法请检查对应版本Visual Studio中是否安装了C++开发环境

2020-04-07 01:01:20 812

原创 Threejs raycaster射线检测非全屏状态下鼠标偏移问题

function initRay() { let getBoundingClientRect = canvas.getBoundingClientRect() // 屏幕坐标转标准设备坐标 let x = ((event.clientX - getBoundingClientRect .left) / canvas.offsetWidth) * 2 - 1;// 标准设备横坐标 l...

2020-04-02 13:24:09 1728 1

原创 ERROR in Entry module not found: Error: Can't resolve './src' in ‘ XXX ’

1.目录结构如下:2. webpack.config.js文件内容如下3.报错内容:解决办法:1.请检查webpack.config.js文件名称是否正确,文件名开头和结尾是否有空格导致webpack找不到配置文件,从而使用了默认的配置。2.或者将index.js文件移动到src目录下即可解决...

2020-04-01 16:32:35 1347

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除