WebGL学习记录(一)

最近公司因为国内外疫情原因协商解散,自己又不太敢出门,打算在家学习一下WebGL。

站长本人有着10年游戏行业从业经验,但是因为游戏引擎、需求、项目类型等原因,对游戏引擎、项目管理、架构设计都还可以,却唯独没有机会使用WebGL。

现在准备开始学习一下,程序员保持持续学习的能力是很重要的。

昨天我已经看了一天WebGL相关资料,bilibili、其他相关教程都有看。

首次学习心得

  • 个人感觉视频教程还是太慢了,有时候不够专注错过细节,找回来比较麻烦;
  • 而网页就没有这样的问题,随时翻看。

WebGL学习记录(一)

学习要懂得总结归纳和排除干扰,而目前不太理解的可以搁置,而许多教程在开篇架构图恰恰画的太细节,比较影响理解;
这里站长讲WebGL开篇需要知道的一些(写此篇文章时已知的)基础元素做一下总结;
并且为了便于理解,会从API调用的角度加上架构图。

WebGL基本元素

  • Canvas
  • WebGLRenderingContext (通过CanvasInstance.getContext("webgl") 获得,拥有大部分WebGL相关API)
  • WebGLShader (分为VertexShader、FragmentShader)
  • ShaderSource (源代码,有引入,编译等操作)
  • WebGLBuffer (用于讲数据传给Shader变量)
  • WebGLProgram(用于附着Shaders)
注:后期会认识到更多WebGL元素,但是初期不需要知道那么多,便于理解基本渲染流程;

WebGL渲染流程图

  • 准备阶段(注意这些元素的创建、连线中的操作, 全部是通过WebGLRenderingContext的API进行的)
  • 渲染阶段 (所有连线操作,对象创建都来自WebGLRenderingContext的API,最终的draw方法也是)