WebGL系列教程一(开篇)

news2025/1/11 11:08:02

目录

  • 1 前言
  • 2 推荐的书籍和网站
  • 3 WebGL简介
  • 4 本教程包含的主要内容预览
    • 4.1 顶点着色器
    • 4.2 片元着色器
    • 4.3 绘制点线面
    • 4.4 绘制三角形和四边形
    • 4.5 缓冲区
    • 4.6 旋转、平移、缩放
    • 4.7 动画
    • 4.8 颜色和纹理
    • 4.9 GLSL语法
    • 4.10 模型变换、视图变换、投影变换
    • 4.11 光照
    • 4.12 层次模型
    • 4.13 鼠标交互
    • 4.14 HUD(平行显示)
    • 4.15 雾化
    • 4.16 透明与半透明
    • 4.17 帧缓冲
    • 4.18 阴影
    • 4.19 obj模型加载
    • 4.20 自定义类型
  • 5 总结

1 前言

  现在三维GIS开发可谓是十分火爆了,尤其是以Cesium为首的三维GIS框架,基本是各个三维GIS开发岗位必须要求掌握的技能。然而当我们需要在Cesium中做出一些很炫酷的功能,或者需要修改Cesium的源码以提高性能时,我们会发现需要大量的WebGL的知识,尤其需要会写GLSL(OpenGL Shading Language),而这对于一个未完全掌握计算机图形学知识和WebGLgiser来说,是比较困难的。作者在学习WebGL的过程中就是这样的一个过程。因此作者决定新开一个系列,讲一讲自己是如何学习WebGL的,过程中也会穿插着讲一些计算机图形学、线性代数的知识,以方便后来的giser学习。

2 推荐的书籍和网站

  在我学习WebGL的过程中,我曾尝试着去找一些比较系统的教程,然而并不尽如人意。很多教程都是分散的,不成体系的。有两个网站还行,一个是MDN,一个是webglfundamentalMDN讲的很乱,没有一个简单明了的思路,当成api文档去看,查查某个类有哪些方法、成员变量还行,用来当入门教程很不合适。webglfundamental倒是好一点,有比较好的思路,也能看到代码实时运行时的效果,但是我觉的跳跃性稍微有点高。当网络上找不到比较好的教程时,我又开始找有没有相关的书籍,十分庆幸找到了《WebGL编程指南》。这本书在我看来讲的非常棒,由浅入深,层层细化,非常适合作为基础入门。本教程中的很多内容也都是参考该书来的。这本书在网上就能下到pdf和代码,如果有哪些同学找不到的,可以在公众号里私信我。

  计算机图形学课程最值得推荐的是B站闫令琪博士的现代计算机图形学入门课程,讲的非常棒,我刷过两遍。对我学习WebGL有很大的帮助,感谢闫博士,那视屏是能免费观看的,因为讲的太好了,因此都有高校老师直接对学生说,听了闫令琪博士的课,就可以不用听他的课了。再次给闫博士点赞,太强了。

3 WebGL简介

  WebGLWeb Graphics Library)是从OpenGL的一个特殊版本OpenGL ES版本派生出来的,主要用于浏览器、嵌入式设备、智能手机、家用游戏机等设备上的三维图形开发。WebGL是在OpenGL的基础上,移除了一些很少用到的功能,保持了一个轻量级的同时,仍然具有渲染精美三维图形的能力。WebGL是在OpenGL ES2.0的基础上发展而来的。
在这里插入图片描述

4 本教程包含的主要内容预览

4.1 顶点着色器

4.2 片元着色器

4.3 绘制点线面

4.4 绘制三角形和四边形

4.5 缓冲区

4.6 旋转、平移、缩放

4.7 动画

4.8 颜色和纹理

4.9 GLSL语法

4.10 模型变换、视图变换、投影变换

4.11 光照

4.12 层次模型

4.13 鼠标交互

4.14 HUD(平行显示)

4.15 雾化

4.16 透明与半透明

4.17 帧缓冲

4.18 阴影

4.19 obj模型加载

4.20 自定义类型

5 总结

  根据作者的个人经验,只要了解了一个立方体是怎么绘制出来的,如何进行贴图,如何进行立方体的旋转、平移、缩放,基本就能搞懂了WebGL/OpenGL是在干什么以及是怎么做到的了。本篇博文是开篇,我们就只进行简单的介绍,下一篇开始进入实战。回见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】MySQL常用的数据类型——表的操作

前言: 🌟🌟本期讲解关于MySQL常用数据类型,表的简单使用,希望能帮到屏幕前的你。 🌈上期博客在这里:http://t.csdnimg.cn/wwaqe 🌈感兴趣的小伙伴看一看小编主页:GGBondl…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法,经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括: 特征提取&#xff…

JAVA开源项目 图书个性化推荐系统 计算机毕业设计

本文项目编号 T 015 ,文末自助获取源码 \color{red}{T015,文末自助获取源码} T015,文末自助获取源码 目录 一、系统介绍1.1 业务分析1.2 用例设计1.3 时序设计 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究…

jmeter之循环控制器使用

一、循环控制器介绍及使用 循环控制器作用: 通过设置循环次数,来实现循环发送请求 位置:测试计划------>线程组(右键添加)------>逻辑控制器------>循环控制器 如图: 参数介绍: 循环次数:5 …

C语言11--特殊函数

静态函数 背景知识:普通函数都是跨文件可见的,即在文件 a.c 中定义的函数可以在 b.c 中使用。静态函数:只能在定义的文件内可见的函数,称为静态函数。 因此静态函数一般会被写在头文件中方便任何需要调用的文件直接包含即可作用&…

JavaScript 循环分支语句-dowhile循环

do/while 循环是 while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块&#xff0c;然后如果条件为真的话&#xff0c;就会重复这个循环。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta htt…

Ansys Zemax | 什么是Sobol取样?

附件下载 联系工作人员获取附件 本文主要介绍了&#xff1a; 什么是Sobol取样&#xff1f; 和随机光线产生方法相比&#xff0c;Sobol取样有什么优点&#xff1f; Sobol取样有什么限制&#xff1f; 随机取样和Sobol取样模式 一个光源会在位置空间以及角度空间随机产生光…

前端常用工具网站分享:MemFire Cloud,懒人开发者的福音

你是否曾梦想过&#xff0c;有那么一款工具&#xff0c;能够让你像变魔术一样快速搭建起一个应用&#xff0c;而无需深陷复杂的后端搭建和接口开发的泥潭&#xff1f;今天&#xff0c;我要为你介绍的&#xff0c;就是这样一个神奇的存在——MemFire Cloud&#xff0c;一款专为懒…

1.C_数据结构_基本知识

相关名词 数据是什么&#xff1a; 数据即信息的载体&#xff0c;是能够输入到计算机中并且能够计算机识别、存储、处理的符号总称。这里的数据不一定是一个int型&#xff0c;也可能是一个语音、一个字符串或者其他的一些打包的内容。 数据元素是什么&#xff1a; 数据元素(…

Danbooru风格图片分享平台szurubooru

什么是 Danbooru &#xff1f; Danbooru 是一种流行的图片分享网站&#xff0c;以其独特的图片标签系统和搜索功能而闻名。"Danbooru风格"通常指的是模仿 Danbooru 网站的图片论坛或图片分享平台所具有的特定特征&#xff0c;如&#xff1a; 标签系统&#xff1a;用户…

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II

代码随想录刷题day24丨93.复原IP地址 &#xff0c;78.子集 &#xff0c; 90.子集II 1.题目 1.1复原IP地址 题目链接&#xff1a;93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 视频讲解&#xff1a;回溯算法如何分割字符串并判断是合法IP&#xff1f;| LeetCod…

2024年高教杯国赛(B题)数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

【2024高教社杯国赛A题】数学建模国赛建模过程+完整代码论文全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024国赛数学建模竞赛&#xff08;A题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过程和解析…

WebAPI(二)、DOM事件监听、事件对象event、事件流、事件委托、页面加载与滚动事件、页面尺寸事件

文章目录 一、 DOM事件1. 事件监听2. 事件类型(1)、鼠标事件(2)、焦点事件(3)、键盘事件(4)、文本事件 3. 事件对象(1)、获取事件对象(2)、事件对象常用属性 4. 环境对象 this5. 回调函数 二、 DOM事件进阶1. 事件流(1)、 捕获阶段(2)、 冒泡阶段(3)、 阻止冒泡(4) 、阻止元素默…

Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著

Optuna这个备受欢迎的超参数优化框架在近期发布了其第四个主要版本。自2018年首次亮相以来&#xff0c;Optuna不断发展&#xff0c;现已成为机器学习领域的重要工具。其用户社区持续壮大&#xff0c;目前已达到以下里程碑&#xff1a; 10,000 GitHub星标每月300万 下载量16,00…

静心是良性循环

我发现一个挺有意思的事&#xff1a; 花时间修炼自己的心&#xff0c;让自己静心&#xff0c;就愿意多花时间修炼&#xff0c;会更加静心&#xff0c;这样就良性循环了。难的是刚开始&#xff0c;心不静&#xff0c;没时间修炼&#xff0c;心静不下来&#xff0c;更没时间修炼&…

分类中的语义一致性约束:助力模型优化

前言 这里介绍一篇笔者在去年ACL上发表的一篇文章&#xff0c;使用了空间语义约束来提高多模态分类的效果&#xff0c;类似的思路笔者也在视频描述等方向进行了尝试&#xff0c;也都取得了不错的效果。这种建模时对特征进行有意义的划分和约束对模型还是很有帮助的&#xff0c;…

基于人工智能的文本摘要生成系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 文本摘要生成是自然语言处理&#xff08;NLP&#xff09;中的一个重要任务&#xff0c;它旨在从长文本中提取出核心内容&#xff0c;生…

【学习笔记】SSL证书安全机制之证书验证

前言&#xff1a;每当Client从Server收到一张证书&#xff0c;有2件事Client需要去验证&#xff1a; 证书是否有效&#xff1f; 证书只是文件中的文本Client如何知道内容能够信任&#xff1f;Server是否是证书真正的拥有者&#xff1f; 证书可以公开获取Client如何知道Server是…

OM5光纤:优化您的数据中心性能

随着数据中心需求的持续增长&#xff0c;传统OM3和OM4光纤在传输距离和带宽方面的局限性日益显现。为应对这些挑战&#xff0c;OM5光纤应运而生。OM5光纤又称为宽带多模光纤&#xff08;WBMMF&#xff09;&#xff0c;通过支持单根光纤上的多波长传输&#xff0c;显著提高了数据…