Vue与WebGL结合绘制三角形

在vue中使用unity3D实现webGL将要呈现的效果 文章目录 Vue + webGL + unity3D 1. 什么是webGL? 1.1 兼容性 2. 什么是unity3D? 2.1 unity3D 的发展史 2.2 从 JavaScript 调用 Unity 脚本函数 2.2 WebGL 性能注意事项 2.2.1可在 WebGL 上期待什么样的性能? 2.2.2 影响性能的 WebGL 特有设置 2.2.3 WebGL 性能分析 2.2.4 后台标签中的 WebGL 内容 2.2.5 限制 WebGL 性能 3. 如何在vu 阅读详情

本文主要介绍Vue与WebGL结合绘制三角形,这里用到新的知识点--缓冲区。本文部分代码源自《WebGL编程指南》。

这里创建了一个initBuffer的函数,用于操作缓冲区。代码如下

<template>
  <div>
    <canvas ref="myglCanvas" @mousedown="clickCanvas($event)" width="400" height="400"></canvas>
  </div>
</template>

<script>
import Tools from "../lib/tools";
export default {
  name: "glCanvas",
  data() {
    return {
      VSHEADER_SOURCE: `attribute vec4 a_Position;
                        void main(){
                        gl_Position = a_Position;
                        }`,
      FSHEADER_SOURCE: `void main(){
                        gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
                        }`,
      points: [],
      gl: null
    };
  },
  methods: {
    initBuffer: function(gl) {
      let vertices = new Float32Array([0, 0.5, -0.5, -0.5, 0.5, -0.5]);
      let n = 3; // The number of vertices
      // Create a buffer object
      let vertexBuffer = gl.createBuffer();
      if (!vertexBuffer) {
        console.log("Failed to create the buffer object");
        return -1;
      }

      // Bind the buffer object to target
      gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
      // Write date into the buffer object
      gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);

      let a_Position = gl.getAttribLocation(gl.program, "a_Position");
      if (a_Position < 0) {
        console.log("Failed to get the storage location of a_Position");
        return -1;
      }
      // Assign the buffer object to a_Position variable
      gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 0, 0);
      // Enable the assignment to a_Position variable
      gl.enableVertexAttribArray(a_Position);

      return n;
    },
    setGL: function() {
      this.gl = this.$refs.myglCanvas.getContext("webgl");
    }
  },
  mounted() {
    this.setGL();
    Tools.initShaders(this.gl, this.VSHEADER_SOURCE, this.FSHEADER_SOURCE);

    let n = this.initBuffer(this.gl);
    if (n < 0) {
      console.log("Failed to set the positions of the vertices");
      return;
    }

    //设置背景色
    this.gl.clearColor(0.0, 0.0, 0.0, 1);
    //设置缓冲区颜色
    this.gl.clear(this.gl.COLOR_BUFFER_BIT);
   
    this.gl.drawArrays(this.gl.TRIANGLES, 0, n);
  }
};
</script>
<style scoped>
</style>

26行 设置三角形三个顶点的位置数组vertices,这里z默认为0;

29行 创建缓冲区vertexBuffer 对象;

36行 绑定缓冲区对象;

38行 将数据vertices写入缓冲区对象;

46行 将缓冲区对象分配给attribute对象;

48行  开启attribute对象;

运行效果

更多内容请扫码关注我的微信公众号,或者在微信里搜索公众号webgis学习,我会不定期更新自己的webgis方面的学习心得。

unity项目打包为webgl后应用于vue项目中(iframe模式)的数据交互 unity项目打包为webgl后应用于vue项目中(iframe模式)的数据交互 新建.jslib文件 新建.cs脚本 在unity中的`Hierarchy`工作区中创建一个可回显获取数据的UI对象,这里以Text对象为例;新建button对象同理,并给button对象重命名为`modelButton1`。导出unity为webgl vue项目中引入unity打包的文件 从unity脚本调用js函数(vue发起,unity接收)从js调用unity脚本函数unity发起,vue接收SendMessage方法 阅读详情

相关推荐

在vue中通过WEBGL渲染一个2d三角形

绘制流程 获取Webgl绘图上下文->初始化着色器-》设置点的坐标信息-》设置背景色->清空->绘制 <template> <div class="page"> <canvas id="glcanvas" width="640" height="480"></canvas> </div> </templ...

jolin233 2389

vue项目结合unity webgl通信(亲身实践 Unity2022.3版本)

在参考网上众多资料后,终于将Vue与Unity Webgl双向通信的功能完成。在此过程中遇到了很多问题,故记录下整体流程。1.unity端实现一个jslib文件预定义函数作为桥接。2.c#使用DllImport引入和调用预定义的函数。3.web端使用js定义被调用函数。1.Unity Webgl程序嵌入vue1.Unity -> vue通信2.vue -> Unity通信。

蓝紫色的忧郁的博客 1万+

OpenLayers实战,WebGL图层根据Feature要素的变量动态渲染多种颜色的三角形,适用于大量三角形渲染不同颜色

本章使用OpenLayers根据Feature要素的变量动态渲染不同颜色的三角形。通过一个WebGL图层生成四种不同颜色的图形要素,适用于WebGL图层需要根据大量点要素区分颜色显示的需求。更多的WebGL图层使用运算符动态生成样式的内容将会陆续更新。## WebGL图层样式运算符详解OpenLayers入门,OpenLayers6的WebGLPointsLayer图层样式运算符详解。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 1044

基于Unity+Vue3通信交互的WebGL项目发布实践

本博客基于Unity+Vue3通信交互的WebGL项目发布实践做了一个测试demo演示unity与vue通过第三方插件**unity-webgl**通信的流程。分三步完成:1、搭建Unity测试项目并发布WebGL部署到Vue项目中。2、验证Vue向Unity发送信息:通过前端UI控制Unity游戏物体的显隐和修改颜色。3、验证Unity向Vue发送信息:Unity监听键盘空格键按下触发前端提示框的显示。

他在试图用代码书写这个世界,字里行间温柔尽显。勿忘初心,努力做有价值的技术文章。 1万+

Vue3高级-第二十六篇:Vue3 与 WebGL 的融合探索

当响应式数据发生变化时,WebGL 图形会相应更新。具体实现思路是,在 Vue3 组件中定义响应式数据,在 WebGL 图形渲染相关代码中引用这些数据,并在数据变化时,通过合适的方法通知 WebGL 系统更新图形。比如,通过一个滑块组件控制立方体的大小,当滑块值改变时,立方体的尺寸相应改变。虽然此处不提供具体代码示例,但核心步骤包括:定义响应式的尺寸数据,在创建立方体几何体时使用该数据,以及在数据变化时重新设置几何体的尺寸参数。假设我们要根据 Vue3 的响应式数据来动态改变 3D 立方体的颜色。

无 376

Vue+OpenLayers6实战进阶专栏目录,Vue+OpenLayers实战案例,Vue+OpenLayers6实战教程

本篇作为Vue整合OpenLayers实战进阶教程的目录,用于整理汇总专栏所有文章,方便查找。本专栏是讲解主流前端框架Vue整合前端最流行的JS二维地图引擎之一OpenLayers的实战教程。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 2851

Vue与WebGL结合--绘制彩色点和三角形

上篇文章中的点的颜色都为红色,其中的颜色变量直接在片元着色器中设置完成。本文介绍将颜色数据与点的坐标数据一起传入着色器中进行点的颜色设置,需要用到varying类型变量。本文部分代码源自《WebGL编程指南》。 代码如下: <template> <div> <canvas ref="myglCanvas" width="400" height="40...

XTTX110的博客 570

OpenLayers实战,WebGL图层鼠标经过要素高亮显示,根据变量自动修改WebGL图层要素的透明度、大小和颜色

本章讲解OpenLayers使用WebGL图层情况下,鼠标经过要素高亮显示,根据变量自动修改WebGL图层要素的透明度、大小和颜色的功能。webgl图层的样式并不像普通矢量图层直接修改或者切换样式就可以的,而是要预先通过webgl的运算符编写特定规则才能动态切换。本章使用match运算符来配合鼠标事件完成整个高亮切换过程。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 1839

【小沐学WebGIS】基于WebGL绘制三维数字地球Earth(WebGL、地球/卫星/航迹)

WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和 数据视觉化。

爱看书的小沐 3024

Rocky Linux 9.2:利用LVM动态调整/home与/根分区空间分配

本文详细介绍了在Rocky Linux 9.2系统中,如何利用LVM(逻辑卷管理器)动态调整/home与根分区(/)的空间分配。针对根分区空间不足而/home分区闲置的常见问题,文章提供了从检查磁盘布局、备份数据、卸载分区、调整逻辑卷大小到重建文件系统的完整操作步骤,并重点说明了XFS与EXT4文件系统在缩容时的不同处理方法,帮助系统管理员安全、在线地实现存储空间的灵活调配。

weixin_29271263的博客 178

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

Vue与WebGL结合---旋转平移矩阵

本文在上文的基础上加上旋转平移矩阵,以达到对图像进行基本的旋转平移操作的目的。文中部分代码源自《WebGL编程指南》 代码如下: <template> <div> <canvas ref="myglCanvas" width="400" height="400"></canvas> </div> </templ...

XTTX110的博客 857

代码复现——SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架

根据《SymAgent: A Neural-Symbolic Self-Learning Agent Framework for Complex Reasoning over Knowledge Graphs》(《SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架》)论文思路,简单复现代码,以实现SymAgent中的Agent-Planner和Agent-Executor模块。Agent-Planner利用大语言模型的归纳推理能力从知识图谱中提取符号规则,指导高效的问题分解。

qq_60040306的博客 1606

WebGL 绘制矩形

上一节绘制了圆点,调用的绘制方法如下:gl.drawArrays(gl.POINTS, 0, 1);这小节尝试一下 绘制单独线段、线条、闭合线条、三角带(可构成矩形)

liubangbo的专栏 735

国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)

本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。

weixin_33670786的博客 428

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析

本文详细解析了在MTK平台上高效部署Qwen2.5大模型的全流程,涵盖从环境准备、模型转换与量化,到编译部署与上机推理。重点介绍了如何利用MTK GAI部署工具包进行模型转换和量化,以适配MTK硬件,并最终在设备上成功运行Qwen2.5模型,为边缘侧AI应用提供实践指南。

weixin_29041195的博客 508

6.绘制三角形

愿你出走半生,归来仍是少年上一个案例通过Buffer实现了点集合的传入并一次性绘制多个点。当前案例通过Buffer传入多个点,并一次性通过点绘制出一个三角形。

我就是那个帕吉 190

windows 下AD9361的 no-os master 工程搭建

参考网站: https://wiki.analog.com/resources/fpga/docs/build#windows_environment_setup https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/software/no-os-setup 参考博客: https://blog.youkuaiyun.com...

Bronceyang的博客 7295

webgl 游戏_前端WebGL技术应用入门

5G时代到来,静态资源加载“速度”与“体积”的概念将被逐渐淡化,前端GUI(Graphical User Interface)编程,应用创新技术(WebGL)提升界面“可交互性”、“灵活性”和“表达能力”提升交互转化与传达率的优势与诉求逐渐显现,本篇文章会通过一次实际的项目落地带你了解WebGL的工作流程,希望能帮各位读者入门WebGL的应用:通过此次业务场景落地,我们以一个前端GUI展...

weixin_39951396的博客 797

帆软js--获取控件和单元格

参数面板: 获取面板控件 ,name为控件名称:_g().parameterEl.getWidgetByName("name") 取值:_g().parameterEl.getWidgetByName("tt3").getValue()2323 赋值:_g().parameterEl.getWidgetByName("tt2").setValue("987") 调用对应的事件比...

江湖行骗老中医 7199

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 806

webGL编程指南实战教程

顶点着色器是GPU渲染管线上一个可以执行着色器语言的功能单元,具体执行的就是顶点着色器程序,webgl定点着色器程序在javascript中一字符串的形式存在,通过编译处理后传递给顶点着色器执行。片元着色器和顶点着色器一样是GPU渲染管线上一个可以执行着色器程序的功能单元,顶点着色器处理的是逐顶点处理顶点数据,片元着色器是逐片元处理片源数据。下面,我们在上面绘制多个点的案例基础上,改用缓存对象来实现,并且鼠标点击制作坐标收集保存,不做渲染,点击渲染按钮时,一次性对缓冲区中的顶点数据做渲染。

IT飞牛 2690

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

regl 函数式webgl开发体验

原文链接: regl 函数式webgl开发体验 上一...

阿豪 380

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

WebGL图像处理

WebGL基础-变量控制与颜色修改。但更多的场景中,不能使用简单的颜色来展示,具有复杂的图形展示需求,这个时候就需要使用纹理贴图来实现。

tjx1997的博客 421

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WebGL 实战【讲师辅导】-曾亮-专题视频课程

【会员免费】链接 http://edu.youkuaiyun.com/lecturer/585 右侧办理会员卡。办会员卡可咨询 QQ 1405491181 。 会员可免费学习已发布的全部课程,和在会员有效期内讲师新发布的全部课程 ,承诺每个月至少增加价值500元+ 的新课程。 本套课程涵盖了全部 WebGL 核心技术,通过系统学习,加上实战演示,让学员的掌握相关技术。(会员免费)...

曾亮的博客 436
上一篇: WebGL与Vue结合连续绘制彩色点
下一篇: Vue与WebGL结合---旋转平移矩阵
XTTX110
博客等级 码龄15年 35粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值