计算机图形学之WebGL绘图入门

Posted 绿色的玫瑰花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机图形学之WebGL绘图入门相关的知识,希望对你有一定的参考价值。

接着上一篇,我们来聊一聊该如何在浏览器窗口下绘制2D或者3D图形。

随着html5时代的到来,浏览器对2D,尤其3D图形的支持越来越好,WebGL也变得越来越成熟。通过在javascript脚本里调用WebGl的相关底层API,可以实现3D图形的渲染。

下面是WebGL的底层架构:

左边是传统网页,右边是基于WebGL的网页。可以发现在传统的javascript的基础上,又多了一种称为GLES ES 的语言,它的底层是基于OpenGL的。


我们可以在canvas标签里对3D图形进行渲染。

首先在html中这样定义:

定义一个id号为webgl的标签。

计算机图形学之WebGL绘图入门(二)

引入相关函数库:

计算机图形学之WebGL绘图入门(二)

webgl-utils.js,webgl-utils.js cuon-utils.js 等几个函数库是专门定义好的,用来辅助图形的渲染。

one.js是绘图代码:

顶点着色器:

计算机图形学之WebGL绘图入门(二)

上图黄色部分即为GLES语言,有点类似C语言

顶点着色器一般用来描述顶点特性(位置,大小等),比如上面设置坐标位置是(0.5,0.0,0.0),基于3D的坐标系统

片源着色器:

计算机图形学之WebGL绘图入门(二)

片源着色器:进行逐片源处理过程,比如光照。片源也可以 理解为像素,对像素进行着色。

使用JS定义一个main方法:

计算机图形学之WebGL绘图入门(二)

这里有一个initShaders()方法,是调用的函数库。getWebGLContext()也是如此。关于这两个方法下面会具体讲!

在html中调用如下:

计算机图形学之WebGL绘图入门(二)

效果:

计算机图形学之WebGL绘图入门(二)

我们来看一看上面JS的main方法代码的执行过程:

计算机图形学之WebGL绘图入门(二)

   过程就是这么简单明了!

我们还可以对上面着色器参数调整,以观察不同效果:

比如调整为:

计算机图形学之WebGL绘图入门(二)

效果:

计算机图形学之WebGL绘图入门(二)

注意这里WebGL的坐标系统范围是0~1,坐标原点默认在中间位置

修改片源着色器:

效果:

ok,这次先聊这么多,明天待续!

以上是关于计算机图形学之WebGL绘图入门的主要内容,如果未能解决你的问题,请参考以下文章

WebGL 与 THREE 入门 Lesson1:计算图形成像原理简介

计算机图形学之扫描转换直线-DDA,Bresenham,中点画线算法

webgl丢失上下文

WebGL入门(四十四)-WebGL上下文丢失事件与上下文恢复事件处理

计算机图形学基于WebGL的纹理贴图

[笔记]《webGL编程指南》- WebGL入门