webgl—将多组点传给webgl系统中

webgl应用的整体流程:
获取webgl绘图上下文—-
初始化着色器—
设置点的坐标信息—
设置canvas背景色—-
清空canvas—
绘制
1.webgl借助canvas绘制的

2.绘制线
首先确定线的点坐标,Webgl运行在GPU中,而js代码运行在CPU中,最终将绘制的图像通过htm’l中的canvas元素进行呈现。
需要将js中的坐标传给webgl系统,传送多个点使用的方法是缓冲区对象:缓冲区对象是webgl系统中的一块存储区,在缓冲区对象中保存想要的绘制的所有顶点的数据
缓冲区对象使用方法:gl.createBuffer()使用首先创建缓冲区
gl.bindBuffer:绑定缓冲区对象的作用是指定缓冲区数据的用途,因为缓冲区不仅可以用来存储顶点数据,同样可以存储颜色信息,需要进行明确的确定
gl.bufferData:将js中的顶点坐标数据写入到缓冲区中
gl.vertexAttribPointer():目的是将缓冲区和顶点着色器中存放顶点坐标的变量建立链接,但是此时着色器还不能从缓冲区读取顶点坐标数据
gl.enableVertexAttribArray():正式启用缓冲区和顶点着色器之间的连接,也就是说顶点着色器可以从缓冲区读取顶点坐标值了
最后使用基本图元的绘制方法
gl.drawArrays(int mode,int first,int count)
first:指定从哪个点开始绘制,一般为0
count:表示绘制需要多少个点
mode:表示绘制的方法:
gl.POINTS:绘制一系列的点
gl.LINES:绘制一系列的单独线段,每两个点作为线段,线段之间不想连接
gl.LINE_STRIP:绘制连续的线段
gl.LINE_LOOP:绘制闭合的线圈
gl.TRIANGLE_STRIP:绘制一个三角带
gl.TRIANGLE_FAN:绘制一个三角扇
gl.TRIANGLE:绘制一系列三角形,每三个点为一个三角形
webgl只绘制三种图形:点,线段,三角形

Original: https://blog.csdn.net/qq_40712151/article/details/128413838
Author: 跑错行的人
Title: webgl—将多组点传给webgl系统中

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/794508/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 新年好:Modbus Slave 8.1.0.1 Crack

    Modbus Slave is a useful tool for simulating up to 32 slave devices in 32 windows in order…

    Python 2023年11月5日
    046
  • 设计模式—组合模式

    类型:结构型 目的:将对象集合组合成 树形结构,使客户端可以以 一致的方式处理 单个对象(叶子节点)和 *组合对象(根节点) 话不多说,上优化案例。 优化案例 不使用组合模式。现有…

    Python 2023年10月20日
    037
  • Git本地仓库上传Gitee后文件夹不能打开

    Git本地仓库上传Gitee后文件夹不能打开 【已解决】 Git本地仓库上传Gitee后文件夹不能打开 如果我们从本地push到远程仓库的项目,文件夹不能打开且样子是文件跟@+数字…

    Python 2023年6月10日
    0189
  • OSPF及其高级特性

    1、ospf(开放式最短路径优先协议,网络层协议,协议号为89,通过组播来发送消息),是一种链路状态路由协议。核心有三张表,邻居表、数据库表、路由表。宏观上先建立邻居表,通过邻居互…

    Python 2023年6月15日
    088
  • Anaconda虚拟环境安装GPU版本的pytorch

    1. 首先安装好Anaconda 2. 安装完之后Anaconda默认是没有桌面快捷方式的,需要点击【开始】,找到Anaconda,点击Anaconda Prompt 如果你不会科…

    Python 2023年9月17日
    074
  • Django和使用的一些技巧

    这里其实有个小问题。首先发送到后端的东西,一定是保存到 request.body里面,然后可能会根据 dataType或者 headers的content-T…

    Python 2023年8月6日
    051
  • 100天精通Python(数据分析篇)——第66天:Pandas透视表基础+实战案例(pivot_table函数)

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年9月29日
    051
  • DataFrame(11):时间处理

    时间处理是我们日常工作中遇到的基本问题 1、比较常用的时间处理函数 year 、month、day、hour、minute、second、quarter、dayofweek、day…

    Python 2023年8月21日
    076
  • 2021美赛D题之数据处理

    运行环境: VS Code1.5.4 Python3.7.8 import pandas as pd import xlwt data=pd.read_csv(‘influence…

    Python 2023年8月18日
    078
  • ROS安装超详细保姆级教程

    1.版本选择 ROS与Ubuntu版本是有着对应关系的,其中Ubuntu1604 + ROS Kinetic;Ubuntu1804 + ROS Melodic; Ubuntu200…

    Python 2023年11月8日
    039
  • SpringBoot+MyBatis Plus对Map中Date格式转换的处理

    在 SpringBoot 项目中, 如何统一 JSON 格式化中的日期格式 现在的关系型数据库例如PostgreSQL/MySQL, 都已经对 JSON 类型提供相当丰富的功能, …

    Python 2023年10月19日
    043
  • 拼凑硬币问题

    原文地址: 问题描述 现有 n1 + n2 种面值的硬币,其中前 n1 种为普通币,可以取任意枚,后 n2 种为纪念币, 每种最多只能取一枚(可能有重复值),每种硬币有一个面值,问…

    Python 2023年10月16日
    043
  • Python实现坦克大战(TankWar)游戏

    文章目录 1 前言 2 功能需求 3 游戏规则总览 4 游戏设计概览 5 TankGame类和游戏状态管理 6 ViewManager类和游戏界面管理 7 GameLevelVie…

    Python 2023年9月17日
    066
  • Python网站导航项目-3.导航数据后端管理应用开发

    每每用到别人的导航网站会充斥的各种的广告,以及很多无用的内容,用起来真的很烦人。把内容网址收藏到浏览器中又很不方便,因此基于git的前端代码结合Django Web开发自制一套简易…

    Python 2023年8月5日
    071
  • jupyter导入mysql文件_Jupyter加载文件的实现方法

    初学初用,随手记录以当作笔记使用,会慢慢再进行补充添加,错误之处烦请指正。 (1)运行本地文件,在代码不加载的情况下可以直接显示结果 % run F:\pythonCode\ran…

    Python 2023年8月21日
    062
  • windows10 mysql8.0 修改密码

    mysql8.0修改密码和mysql5.*不一样! win+r,运行cmd 停掉mysql服务 3.mysqld启动免登录密码模式 4.重新打开一个dos窗口,登录mysql,不要…

    Python 2023年6月3日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球