当前位置: 首页 > news >正文

WEBGL(2):绘制单个点

代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="js/glMatrix-0.9.6.min.js"></script><script>//顶点着色器let vertexstring = `attribute vec4 a_position;uniform     mat4    proj;void main(void){gl_Position =proj *  a_position;gl_PointSize=60.0;}`;//片元着色器let fragmentstring = `void main(void){gl_FragColor = vec4(0,0,1.0,1.0);}`;var projMat4 = mat4.create();var webgl;//function init() {initWebgl();initShader();initBuffer();draw();}//webgl初始化function initWebgl() {//获取webgl的容器对象let webglDiv = document.getElementById('myCanvas');//获取webGL对象webgl = webglDiv.getContext("webgl");//webGL视觉区域webgl.viewport(0, 0, webglDiv.clientWidth, webglDiv.clientHeight);//设置webgl投影坐标系mat4.ortho(0, webglDiv.clientWidth, webglDiv.clientHeight, 0, -1.0, 1.0, projMat4)}//Shader初始化function initShader() {//定义Shader//顶点shaderlet vsshader = webgl.createShader(webgl.VERTEX_SHADER);//片元shaderlet fsshader = webgl.createShader(webgl.FRAGMENT_SHADER);//	绑定shaderwebgl.shaderSource(vsshader, vertexstring);webgl.shaderSource(fsshader, fragmentstring);//	编译shaderwebgl.compileShader(vsshader);webgl.compileShader(fsshader);if (!webgl.getShaderParameter(vsshader, webgl.COMPILE_STATUS)) {var err = webgl.getShaderInfoLog(vsshader);alert(err);return;}if (!webgl.getShaderParameter(fsshader, webgl.COMPILE_STATUS)) {var err = webgl.getShaderInfoLog(fsshader);alert(err);return;}//创建shaderlet program = webgl.createProgram();//着色器绑定shaderwebgl.attachShader(program, vsshader);webgl.attachShader(program, fsshader)webgl.linkProgram(program);webgl.useProgram(program);webgl.program = program}//Buffer初始化 将数据绑定到shaderfunction initBuffer() {let pointPosition = new Float32Array([100.0, 100.0, 0.0, 1.0]);let aPsotion = webgl.getAttribLocation(webgl.program, "a_position");webgl.vertexAttrib4fv(aPsotion, pointPosition);let uniformProj = webgl.getUniformLocation(webgl.program, "proj");webgl.uniformMatrix4fv(uniformProj, false, projMat4);}//webgl绘制function draw() {webgl.clearColor(0.0, 0.0, 0.0, 1.0);webgl.clear(webgl.COLOR_BUFFER_BIT | webgl.DEPTH_BUFFER_BIT);webgl.drawArrays(webgl.POINTS, 0, 1);}</script>
</head><body onload="init()"><canvas id='myCanvas' width="1024" height='768'></canvas>
</body></html>

效果如下:

http://www.lryc.cn/news/148621.html

相关文章:

  • C# task多线程创建,暂停,继续,结束使用
  • 界面控件DevExpress WinForms(v23.2)下半年发展路线图
  • vue实现按需加载的多种方式
  • el-switch组件在分页情况下的使用
  • 【100天精通python】Day49:python web编程_web框架,Flask的使用
  • sql 查重以及删除重复
  • Flux语言 -- InfluxDB笔记二
  • 18.Oauth2-微服务认证
  • vue和node使用websocket实现数据推送,实时聊天
  • 汽车电子笔记之:基于AUTOSAR的多核监控机制
  • GDB 源码分析 -- 断点源码解析
  • SpringMVC概述与简单使用
  • 传输层—UDP原理详解
  • CK-GW06-E03与汇川PLC的EtherNet/IP通信
  • UI界面自动化BagePage
  • 北京开发APP的费用明细
  • 2023年MySQL核心技术第一篇
  • 通讯协议056——全网独有的OPC HDA知识一之接口(十一)IOPCHDA_Playback
  • 数学建模:数据的预处理
  • Linux土遁术之监测监测进程打开文件
  • css让多个盒子强制自动等宽
  • 【高危】Apache Airflow Spark Provider 反序列化漏洞 (CVE-2023-40195)
  • 树模型与集成学习:LightGBM
  • PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例
  • 数据结构(Java实现)-二叉树(下)
  • 如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?
  • 固定资产管理措施怎么写
  • C语言中typedef和const的区别
  • 大数据系列教程之 Kafka基础
  • 【Go 基础篇】Go语言日期与时间函数详解:时间的掌控与转化