收获

  • attribute与uniform:存储限定符,他表示数据将由外部传给着色器程序,而不用事先写死,使用前需要先获取变量的存储地址
  • 获取鼠标在webgl中的坐标:浏览器和canvas坐标系原点在左上角,webgl坐标系原点在中心并且最大为1(1,1,1),需转换后使用
/**- 获取点在canvas内的x坐标:clientX-rect.x- 将canvas坐标系原点平移到canvas中心后的x坐标:(clientX-rect.x) - rect.width/2 - webgl坐标系xy最大为1,所以将canvas的x坐标除以x坐标最大值:((clientX - rect.x) - rect.width / 2) /(rect.width / 2)*/
let mouseXY = (e, type = 'webgl') => {let { clientX, clientY } = elet rect = e.target.getBoundingClientRect()let x = ((clientX - rect.x) - rect.width / 2) /(rect.width / 2)let y = (rect.height / 2 - (clientY - rect.y)) / (rect.height / 2)return [x, y]
}
  • 新的理解:Element.getBoundingClientRect()返回值中的top/y和left/x 其实就是元素的原点在浏览器客户区client中的坐标
  • 顶点着色器进行的是逐顶点的操作,片元着色器进行的逐片元的操作
  • 缓冲区对象以及使用流程:可存入多个顶点数据,供着色器使用,以创建更复杂的图像。
    1. 创建缓冲区对象 gl.createBuffer()
    2. 绑定缓冲区对象 gl.bindBuffer()
    3. 将数据写入缓冲区 gl.bufferData()
    4. 将缓冲区分配给一个attribute变量 gl.vertexAttribPointer()
    5. 开启attribute变量 gl.enbleVertexAttribArray()

总结

学习webgl已有3天,对webgl的作用和绘图的流程有了一定的理解,可以使用webgl响应点击事件绘制单个点,一只脚已经踏进来,干吧得
遇到的问题:

    • 控制台报错入参1类型不为webgl_program,检查js代码未发现问题,后排查原来是片段着色器的问题,未设置浮点数精度,着色器代码出错并不会直接打印在控制台,坑!
  1. 到底什么是缓冲区?

22-09-02 : 内存中一块预留的存储空间,在webgl中,缓冲区可以用来给顶点着色器传入多个顶点数据以绘制复杂图形

明日计划: 绘制及变换三角形,理解清除缓冲区

【WebGL学习日报】22/09/01 : 绘制点相关推荐

  1. WebGL学习笔记 第三章绘制和变换三角形

  2. 工作学习总结 22.09.27 day1

    多数据源操作数据时,要对每一个数据库都通过指定Bean的name的形式配上对应jdbcTemplate,否则找不到对应的数据库.   自动装配时,通过@Resource(name="&quo ...

  3. WebGL(三)——学习Canvas及简单图形绘制

    WebGL(三)--学习Canvas及简单图形绘制 Canvas简介 canvas是HTML5新增的一个可以使用javascript脚本在其中绘制图像的HTML元素(容器),它可以用来制作图像.动画, ...

  4. 原生webgl学习(四) WebGL绘制矩形(一)

    本专栏所有文章示例代码均可在我的gitee码云上获取,读者可自行下载:https://gitee.com/babyogl/learnWebGL:本节代码在文件夹chapter-02里面的color-t ...

  5. 学习日报 1028 分支结构 if分支语句

    学习日报 1028 分支结构 if分支语句 https://cloud.189.cn/t/FBzQbeRnYFbi java包 包的基本使用 java包的基本使用_pyhui的技术博客-CSDN博客 ...

  6. WebGL学习之纹理盒

    原文地址:WebGL学习之纹理盒 我们之前已经学习过二维纹理 gl.TEXTURE_2D,而且还使用它实现了各种效果.但还有一种立方体纹理 gl.TEXTURE_CUBE_MAP,它包含了6个纹理代表 ...

  7. WebGL学习(1) - 三角形

    原文地址:WebGL学习(1) - 三角形 还记得第一次看到canvas的粒子特效的时候,真的把我给惊艳到了,原来在浏览器也能做出这么棒的效果.结合<HTML5 Canvas核心技术>和网 ...

  8. 深度学习(22)神经网络与全连接层五: 误差计算

    深度学习(22)神经网络与全连接层五: 误差计算 1. MSE 2. Entropy(熵) 3. Cross Entropy 4. Binary Classification 5. Single ou ...

  9. 我的webgl学习之路(一)

    我的webgl学习之路 (一) 做项目中偶然需要移动端3d展示,所以学习了threejs;但是有着各种限制,还有就是项目要达到好的效果肯定是需要后期处理等等,所以展开了我学习webgl之路,我刚开始毫 ...

最新文章

  1. Kimera:一个基于度量语义的SLAM开源库
  2. DNS(二)--正反解析及主从配置
  3. LINUX 下构建OpenGL ES 3.0
  4. Thread 线程同步、线程状态
  5. 关于java开发中的实用工具Hutool工具类
  6. 胶囊网络与计算机视觉教程 @CVPR 2019
  7. 洛达官方软件检测_关于购买HQB洛达耳机的你需要知道的!!!
  8. 排序算法总结(四)快速排序【QUICK SORT】
  9. linux下命令行操作快捷键及技巧
  10. ubuntu 挂载优盘
  11. 计算机代码大全喜欢你,微信示爱代码大全 七夕情人节微信翻译表白代码2021
  12. 用HTML+CSS做一个漂亮简单的轻量级图片相册博客网站(web前端期末大作业)
  13. Cannot mix different versions of joi schemas错误
  14. HEVC之CU、PU、TU分析
  15. 龙芯CPU芯片介绍说明
  16. 二十一世纪大学英语读写基础教程学习笔记(原文)——5 - Shipwrecked in Antarctica(沉船南极洲)
  17. rtx3050显卡什么水平 rtx3050显卡相当于GTX什么级别
  18. [ArcPy] 代码汇总
  19. 机器学习中输入空间、特征空间、假设空间
  20. 电子邮箱的工作原理以及SMTP、POP3、IMAP之间的联系和区别

热门文章

  1. 梳理ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系
  2. FLV视频文件的转换
  3. 运算放大器及其信号放大
  4. NCspeed软件+视频教程
  5. 系统运维的一些知识点
  6. 转:四大资深Manager谈IT审计职业经验
  7. kafka-01部署启动
  8. 信息经济学的问题及答案
  9. 2017年医疗人工智能产业图谱
  10. Neural Motifs: Scene Graph Parsing with Global Context (CVPR 2018) 运行复现遇到的一些坑以及解决方法