第三节 WebGL中使用gl.drawArrays()和gl.drawElements()绘制图形
来源:互联网 发布:算法导论 kindle 编辑:程序博客网 时间:2024/04/29 15:54
我们可能都知道,很多三维模型构成的基本单位都是三角形(三角面片),例如.stl和.obj这两种应用广泛的三维模型文件格式。再复杂的模型都可以由三角面片来组成,由此可见三角形在图形学中的重要地位。而且WebGL里面除了支持点(gl.POINTS)、线(gl.LINES、gl.LINE_STRIP和gl.LINE_LOOP),就是三角形(gl.TRIANGLES、gl.TRIANGLE_STRIP、gl.TRIANGLE_FAN)绘制了,因此WebGL并不提供四边绘制的函数,但如果有需要可以自己构建相关的函数绘制四边形。
WebGL有以下两个绘制函数:
void gl.drawArrays(mode, first, count);
mode: 画图函数,告诉系统你要画点、线,还是三角形;这里我们主要用到画三角形的函数,可参考我另外一篇博客:http://blog.csdn.net/qq_37338983/article/details/73742119,里面有对几种三角形的绘制方法的介绍,还有一个绘制示例。
first:指定顶点开始绘制的位置;
count:绘制图形的顶点数。
例如,gl.drawsArrays(gl.TRIANGLES, 0, 3),表示从第一个顶点开始画一个三角形,3表示三角形总共有三个顶点。当我们想绘制复杂的三维图形时,当count是一个很大的数,例如一些稍微复杂三维模型文件的顶点数一般少则几十万,多则几百万。这种情况下,不推荐使用gl.drawArrays(),而推荐WebGL另一个自带的绘制函数gl.drawElements();
因为前者比较适合于绘制简单的图形,后者更适合绘制复杂的三维图形,可以避免重复定义顶点,下面对gl.draeElements()做介绍:
void gl.drawElements(mode, count, type, offset);
mode: 画图函数,告诉系统你要画点、线,还是三角形;这里我们主要用到画三角形的函数可参考我另外一篇博客:http://blog.csdn.net/qq_37338983/article/details/73742119,里面有对几种三角形的绘制方法的介绍;
count:所绘制图形的顶点个数;
type: 指定缓冲区中的值的类型,常用的两个值,分别为gl.UNSIGNED_BYTE和gl.UNSIGNED_SHORT,前者为无符号8位整数值,后者为无符号16位整数值;
offset:指定索引数组中开始绘制的位置,以字节为单位;
例如,gl.drawElement(gl.TRIANGLES, n, gl.UNSIGNED_SHORT, 0),表示从顶点数组中的第一个顶点点开始画三角形,总共有n个顶点,而且数值的索引数据类型为:gl.UNSIGNED_SHORT。
- 第三节 WebGL中使用gl.drawArrays()和gl.drawElements()绘制图形
- WebGL中gl.drawArrays()与gl.drawElements()对比
- WebGL中gl.drawArrays()与gl.drawElements()对比
- Unity GL 绘制图形
- Unity3D 使用 GL 绘制线条
- Unity中使用GL在Camera上绘制文字
- GL
- GL
- GL
- 使用OPEN GL ES显示图形 -目录
- 第三节 windows绘制图形
- 【代码】Android 开发 Open GL ES 绘制 3D 图形
- GL绘制一个矩形
- 图形化调试 - unity使用GL库画线
- [Mapbox GL]使用data-driven风格绘制圆形
- Open GL ES 三角形绘制
- GL中投影基础知识
- glsurfaceview 和 open gl
- Centos6.8通过yum安装mysql5.7
- 【设计模式】简单工厂模式
- Unix网络编程实践:时间获取服务器程序
- 进程间的通信---消息队列
- tf.reduce_mean(input,axis=None,keep_dims=False,name=None,reduction_indices=None)
- 第三节 WebGL中使用gl.drawArrays()和gl.drawElements()绘制图形
- LintCode488快乐数
- Springboot-maven--jpa-simple-example
- maven在mac上的安装及配置
- 周中训练笔记+hdu2588+3501【欧拉函数】
- jqLite API参考
- Android自定义View——风车
- linux系统管理
- android自定义View学习5--绘制顺序