javascript很简单,核心点就一个: 一切皆对象. 简单又熟悉.呵呵

这么简单的一句话,理解后,你就掌握了js。

一切皆对象,函数也是对象,创建静态方法 fun.action, 创建实例:new fun。。。

就是这么简单,这么随意。因为简单随意,所以要牢记根本.

下面切入正题, 彻底理解webgl

webgl是干什么的?是一套在cpu上调用在gpu上运行的画三角形工具.

传统的画三角形过程如下 创建实例. 设置顶点,设置样式,调用方法

let shape = new Shape();

shape.beginFill(color);

shape.move(ax, ay)

shape.line(bx, by)

shape.line(cx, cy);

shape.line(ax, ay)

shape.endFill();

webgl基本上也就这个过程

创建变量 var buffer = gl.createBuffer();

设置顶点

  let positions = [ax,ay,bx,by,cx,cy...];

  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);

  gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);

设置样式

gl.uniform();

调用方法

   gl.drawArray();

传统的画三角形方法与gpu画三角形不同的是

传统的画三角形 数据直接存内存中

webgl画三角形

   数据是要从内存中传到显示中,并且只能传二进制数据.

   gpu自已有一套流程, 设置顶点->设置样式->画三角形.

设置顶点,通过"顶点着色器语言"实现

设置样式, 通过"像素着色器语言"实现

drawcall数

egret的计算方式丑的一逼.

优雅的姿势是给drawelement加个钩子函数, 参见https://github.com/eXponenta/gstatsjs

彻底理解webgl的更多相关文章

  1. Hello Point——WebGL

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  2. 【Unity】开发WebGL内存概念具体解释和遇到的问题

    自增加unity WebGL平台以来.Unity的开发团队就一直致力于优化WebGL的内存消耗. 我们已经在Unity使用手冊上有对于WebGL内存管理的详尽分析,甚至在Unite Europe 20 ...

  3. WebGL学习笔记(2)

    根据上一篇学习笔记,理解WebGL的工作原理及基本调用代码后,可以开始研究3D顶点对象的缩放.旋转.以及对对象进行可交互(鼠标或键盘控制)的旋转或者缩放. 要理解对象的旋转/缩放需要首先学习矩阵的计算 ...

  4. WebGL简易教程(六):第一个三维示例(使用模型视图投影变换)

    目录 1. 概述 2. 示例:绘制多个三角形 2.1. Triangle_MVPMatrix.html 2.2. Triangle_MVPMatrix.js 2.2.1. 数据加入Z值 2.2.2. ...

  5. ThreeJs 3D 全景项目开发总结

    本文来自网易云社区 作者:唐钊 项目背景 那是在一个毫无征兆的下午,我还沉浸在 vue 的世界中,突然编辑跑过来说N的新官网想做一些3D全景的东西,一开始其实我的内心是拒绝的,一是没怎么实质性做过 W ...

  6. 通过实例深入理解HTML5/CSS3/SVG/WebGL的技术本质

    常常听到人们对于HTML5的讨论,看了页面头部这个那个就是Html5,误认为HTML5只是新增些标签“而已”,学完了W3School似乎就理解了.实际上很多从业人员并没有深入理解业界为什么要推出HTM ...

  7. WebGL学习笔记(一):理解基本概念和渲染管线

    WebGL 是以 OpenGL ES 2.0 为基础的 3D 编程应用接口. 渲染管线(图形流水线) 渲染管线是指将数据从3D场景转换成2D图像,最终在屏幕上显示出来的总过程.它分为几个阶段:应用阶段 ...

  8. 深入理解Three.js(WebGL)贴图(纹理映射)和UV映射

    本文将详细描述如何使用Three.js给3D对象添加贴图(Texture Map,也译作纹理映射,“贴图”的翻译要更直观,而“纹理映射”更准确.).为了能够查看在线演示效果,你需要有一个兼容WebGL ...

  9. 自己对WEBGL坐标系的转换过程的理解【如图】

随机推荐

  1. 【转】用C语言实现FFT算法

    傅里叶变换 快速傅里叶变换(Fast Fourier Transform,FFT)是一种可在  时间内完成的离散傅里叶变换(Discrete Fourier transform,DFT)算法. 在算法 ...

  2. [LeetCode] 138. Copy List with Random Pointer 拷贝带有随机指针的链表

    A linked list is given such that each node contains an additional random pointer which could point t ...

  3. cocos: RenderTexture 合并精灵图片

    var render = new cc.RenderTexture(730, 450); //创建渲染纹理对象,并数字确定宽度 render.begin(); var sp1 = cc.Sprite. ...

  4. 用SQL语句去掉重复的记录

    删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据 1.delete from 表 where id not in (select max(id) ...

  5. 使用WCF-SQL一次Insert多个表

    在Visual Studio中新增生成项目     选择适配器类型     选择WCF-SQL适配器   创建连接选项   选择相应的存储过程   生成相应的消息架构  

  6. 33,Leetcode 搜索旋转排序数组-C++ 递归二分法

    题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这 ...

  7. linux kernel debug

    1. sysrq http://www.chinaunix.net/old_jh/4/902287.html 常用的SysRq命令(序列)  重启机器的SysRq命令序列是 k(SAK) s(sync ...

  8. 第九节:EF Core各种迁移指令(CodeFirst和DBFirst)

    一. CodeFirst模式指令 1.前提: 必须的程序集: Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.Des ...

  9. Prometheus 监控目标运行状态并邮件通知

    Prometheus 监控目标运行状态并邮件通知 邮件服务安装:https://www.cnblogs.com/xiangsikai/p/9809654.html 告警规则示例:https://pro ...

  10. Dictionary<string, Dictionary<string, Person>> dic = new Dictionary<string, Dictionary<string, Person>>();

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...