WebGL程序在屏幕上同时使用HTML和javascript来创建和显示三维图形。WebGL中新引入的<canvas>元素标签,它定义了网页上的绘图区域。

由于<canvas>元素可以灵活地同时支持维维图形和三维图形,它不直接提供绘图方法,而是提供一种叫上下文(context)的机制来进行绘图。我们首先获取这个上下文。

//获取WebGL绘图上下文
var gl = getWebGLContext(canvas, true);

getWebGLContext(element, [debug]);

获取WebGL绘图上下文;
如果开启debug属性,遇到错误时将在控制台显示错误消息。参数:
/***
* 1.画一个矩形
*/
function main() {
//获取<canvas>标签
var canvas = document.getElementById("myCanvas");
//获取WebGL绘图上下文
var gl = getWebGLContext(canvas, true);
//如果浏览器不支持WebGL则提示错误
if(!gl){
console.log("请使用高版本的浏览器!");
return;
}
console.log(gl);
//指定清除颜色缓冲区的颜色,每个分量的取值范围0-1
gl.clearColor(0.5, 1, 1, 1);
//用指定的颜色清除颜色缓冲区
gl.clear(gl.COLOR_BUFFER_BIT);
} /***
* 1.画一个点
*/
//顶点着色器程序
var VSHADER_SOURCE =
"void main(){\n" +
//设置坐标
"gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" +
//设置尺寸
"gl_PointSize = 10.0;\n" +
"}\n";
//片元着色器
var FSHADER_SOURCE =
"void main() {\n" +
//设置颜色
"gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n" +
"}\n";
function main(){
//获取<canvas>标签
var canvas = document.getElementById("myCanvas");
//获取WebGL绘图上下文
var gl = getWebGLContext(canvas, true);
//如果浏览器不支持WebGL则提示错误
if(!gl){
console.log("请使用高版本的浏览器!");
return;
}
console.log(initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE));
//初始化着色器
if(!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)){
console.log("着色器初始化失败!");
return;
}
//设置<canvas>的背景色
gl.clearColor(0.0, 0.0, 0.0, 1.0);
//清空<canvas>
/***
* gl.clear();函数继承自OpenGL();
* 它基于多基本缓冲区模型,比二维绘图上下文复杂的多。
* 清空绘图区,实际上是在清空颜色缓冲区 通过指定的颜色去擦除已经绘制的内容。
* 传递 gl.COLOR_BUFFER_BIT参数就是在告诉WebGL清空颜色缓冲区。
* 如果在使用该函数之前没有指定任何颜色,那么默认会rgba(0,0,0,0);作为清除颜色。
* 这个颜色是全透明的,替换出来的结果就是什么颜色都没有,显示为浏览器本身的颜色。
*
*/
gl.clear(gl.COLOR_BUFFER_BIT);
//绘制一个点
/***
* drawArrays(mode, first, count);
* mode:指定绘图的方式,可接收以下常量符号:
* POINTS LINES LINE_STRIP LINE_LOOP TRIANGLES TRIANGLES_STRIP TRIANGLES_FAN
* first:指定从哪个顶点开始绘制 整型
* count:指定绘制需要用到多少个顶点 整型
* 返回值:无
* 错误:
* INVALID_ENUM:传入mode参数不是前序参数之一
* INVALID_VALUE:参数first或count是负数
*/
gl.drawArrays(gl.POINTS, 0, 1);
}

WebGL画一个10px大小的点的更多相关文章

  1. Effective前端3:用CSS画一个三角形

    p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...

  2. Effective前端(3)用CSS画一个三角形

    来源:https://zhuanlan.zhihu.com/p/26160325 三角形的场景很常见,打开一个页面可以看到各种各样的三角形: 由于div一般是四边形,要画个三角形并不是那么直观.你可以 ...

  3. Effective前端1---chapter 2 用CSS画一个三角形

    1.CSS画三角形的画法 第一步:三角形可以用border画出来,首先一个有四个border的div长这样: <div class="triangle"></di ...

  4. 用canvas画一个的小画板(PC端移动端都能用)

    前言 本篇的内容主要包括: canvas标签简介 画板的功能简介 画板的JS部分(包括:1.获取画布 2.使画板全屏幕显示且自适应 3.如何绘制直线 4.绘画时的三种状态(鼠标点击.移动.离开)5.画 ...

  5. canvas游戏小试:画一个按方向键移动的圆点

    canvas游戏小试:画一个按方向键移动的圆点   自己对canvas,但又有一颗做游戏的心TT.然后记录一下对canvas的学习吧,用一个按方向键控制的小圆点来做练习.(编程时用了一些es6的语法) ...

  6. .使用 HTML+CSS 实现如图布局,border-widht 5px,一个格子大小是 50*50,hover时候边框变为红色(兼容IE6+,考虑语义化的结构)

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  7. css3简单几步画一个乾坤图

    原文:[原创]css3简单几步画一个乾坤图 效果如上,鼠标移上去会有动画. 代码如下非常简单: <html> <head> <style> .outer{heigh ...

  8. vb代码之------画一个半透明矩形

    入吾QQ群183435019 (学习 交流+唠嗑). 废话不说,咱们来看代码吧 程序结果运行如下 需要如下API 1:GdipCreateFromHDC 功能:创建设备场景相对应的绘图区域(相当于给设 ...

  9. 手把手带你画一个漂亮蜂窝view Android自定义view

    上一篇做了一个水波纹view  不知道大家有没有动手试试呢点击打开链接 这个效果做起来好像没什么意义,如果不加监听回调 图片就能直接替代.写这篇博客的目的是锻炼一下思维能力,以更好的面多各种自定义vi ...

随机推荐

  1. oracle-11g-64位安装和plaql

    1.oracle卸载 如果是新装,请跳过此步骤 卸载步骤: 1.停止所有服务 2.用自带删除软件,删除所有目录 3.打开注册表: -->运行regedit,删除HKEY_LOCAL_MACHIN ...

  2. [BZOJ4712]洪水-[树链剖分+线段树]

    Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开了创造模式,然后飞到山顶放了格水.于是小A面前出现了一个瀑布.作为平民的小A只好老实巴交地爬 ...

  3. 不会Python开发的运维终将被淘汰?

    Python语言是一种面向对象.直译式计算机程序设计语言,由Guido van Rossum于1989年底发明.Python语法简捷而清晰,具有丰富和强大的类库,具有可扩展性和可嵌入性,是现代比较流行 ...

  4. php小项目小结

    最近一直断更,并不是出于什么问题,而是想找个合适的机会去整理下html基本的一些琐碎的知识点 近期突发感冒,吊水,吊错药,原因只是重名重姓,这不是个梗,很是痛苦的现实事故 so,只能用剩下的半天去完成 ...

  5. 002 -- MySQL的逻辑架构

                                            msql的逻辑架构图 第一层:主要功能是连接处理.授权认证.安全等.相当于JavaEE中的常说的Web层 第二层:包含了 ...

  6. 技本功丨利用 Atomic 构建 React 项目工作流,so easy!

    近日刷微博,#2018年结婚率创新低#荣登热门话题NO.1,沪浙最不积极. 生活压力越大,缺爱的人也越来越多...据本萌的不完全观察,程序猿虽然是压力加成的职业,在袋鼠云还是有不少早早脱了单.至于,脱 ...

  7. PytorchZerotoAll学习笔记(三)--自动求导

    Pytorch给我们提供了自动求导的函数,不用再自己再推导计算梯度的公式了 虽然有了自动求导的函数,但是这里我想给大家浅析一下:深度学习中的一个很重要的反向传播 references:https:// ...

  8. 从零开始的Python爬虫速成指南

    序 本文主要内容:以最短的时间写一个最简单的爬虫,可以抓取论坛的帖子标题和帖子内容. 本文受众:没写过爬虫的萌新. 入门 0.准备工作 需要准备的东西: Python.scrapy.一个IDE或者随便 ...

  9. 3.Airflow使用

    1. airflow简介2. 相关概念2.1 服务进程2.1.1. web server2.1.2. scheduler2.1.3. worker2.1.4. celery flower2.2 相关概 ...

  10. python_MySQL 数据库操作

    Python中的mysql操作可以使用MySQLdb模块来完成.它符合Python社区设计的Python Database API SpecificationV2.0标准,所以与其他的数据库操作的AP ...