5.绘制多点

news2024/10/7 8:31:34

愿你出走半生,归来仍是少年!

        前面几个案例通过TS传入点参数实现绘制,但是每次的绘制都是单独绘制一个点,未实现一次绘制多个点的效果。该案例通过GL的Buffer实现一次绘制多点。

1.知识点

1.1.缓冲区绘制流程

        通过缓冲区对象处理数据时,大概遵循以下5个步骤

2.代码

<script setup lang="ts">
    import { onMounted, ref } from "vue";
    import Gl2Utility from "../../Gl/Gl2Utility";
    import VertexBufferUtility from "../../Gl/VertexBufferUtility";

    const a_PositionName = "a_Position";

    onMounted(() => {



        const gl2 = Gl2Utility.GetGl2("canvas");

        if (gl2 == null) {
            console.error("初始化失败!");

            return;
        }



        //顶点着色器源码
        const vertexShaderSource = `

        attribute vec4 ${a_PositionName};

            void main(){

                //给内置变量gl_PointSize赋值像素大小
                 gl_PointSize=20.0;

                 //顶点位置,位于坐标原点
                  gl_Position =a_Position;
            }

        `;

        const fragShaderSource = `
            void main(){
                //定义片元颜色
                gl_FragColor = vec4(1.0,0.0,0.0,1.0);
            }
        `;


        const program = Gl2Utility.InitShaders(gl2, vertexShaderSource, fragShaderSource);

        if (program == null) {
            return;
        }
        //获取参数位置
        const a_PositionLocation = gl2.getAttribLocation(program, a_PositionName);

        if (a_PositionLocation < 0) {
            console.error("获取参数失败!");

            return;
        }


        const count = VertexBufferUtility.InitFloatXY(gl2, program, a_PositionName, [0.0, 0.5, -0.5, -0.5, 0.5, -0.5]);

        //设置清除时的背景色
        gl2.clearColor(0., 0., 0., 1.);

        //清除
        gl2.clear(gl2.COLOR_BUFFER_BIT);
       
        //绘制点
        gl2.drawArrays(gl2.POINTS, 0, count);
         

    });




</script>

<template>

    <div class="demo_main">

        <canvas id="canvas"></canvas>
    </div>
</template>

<style scoped>

    #canvas {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
        background-color: blue;
    }

    .demo_main {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
    }
</style>

3.效果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1065983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三相交流电压控制器供电的三相异步电动机定子电压控制研究(Simulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

统计教程|PASS实现单因素二元Logistic回归分析且自变量为二分类的优势比检验的样本量估计

在对临床数据的探索分析工作中&#xff0c;我们经常会使用Logistic回归分析去探索影响疾病的发生、发展的重要影响因素&#xff0c;或应用Logistic回归模型进行相关的预测分析。但是在进行Logistic回归分析时&#xff0c;样本含量的估计常常是令临床科研工作者最头痛的一件事了…

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览

1. 预测部署简介与总览 本章主要介绍PP-OCRv2系统的高性能推理方法、服务化部署方法以及端侧部署方法。通过本章的学习&#xff0c;您可以学习到&#xff1a; 根据不同的场景挑选合适的预测部署方法PP-OCRv2系列模型在不同场景下的推理方法Paddle Inference、Paddle Serving、…

服务器数据恢复-V7000存储2块磁盘故障脱机的数据恢复案例

服务器数据恢复环境&#xff1a; P740AIXSybaseV7000存储&#xff0c;存储阵列柜上共12块SAS机械硬盘&#xff08;其中一块为热备盘&#xff09;。 服务器故障&#xff1a; 存储阵列柜中有磁盘出现故障&#xff0c;工作人员发现后更换磁盘&#xff0c;新更换的磁盘数据同步到40…

聚观早报 | 问界新 M7 车型破单日大定纪录;iQOO 12影像大升级

【聚观365】10月7日消息 问界新 M7 车型破单日大定纪录 iQOO 12影像大升级 三星Galaxy S23 FE发布 欧拉好猫在墨西哥上市 1-8月我国智能手机产量6.79亿台 问界新 M7 车型破单日大定纪录 据问界官方消息&#xff0c;AITO 问界汽车的新 M7 车型在中秋国庆长假期间又刷新了自…

读书笔记——《三国演义》

前言 提起《三国演义》似乎每个人都可以说几个其中的人物、情节&#xff0c;但是你真的看过《三国演义》原著吗&#xff1f; 本身很喜欢三国题材游戏&#xff0c;一些游戏比如《霸王大陆》《全战三国》等等都是我的最爱&#xff0c;很喜欢收集名将大杀四方的感觉。但是回想起…

使用 Bun 快速搭建一个 http 服务

前端运行时 Bun 1.0 正式发布&#xff0c;如今&#xff0c;Bun 已经稳定并且适用于生产环境。Bun 不仅是一个专注性能与开发者体验的全新 JavaScript 运行时&#xff0c;还是一个快速的、全能的工具包&#xff0c;可用于运行、构建、测试和调试 JavaScript 和 TypeScript 代码&…

6-4 删除链表中的元素 分数 10

struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* prv NULL;struct ListNode* cur head;// 处理头节点等于val的情况while (cur ! NULL && cur->val val) {head cur->next;free(cur);cur head;}// 处理中间节点和尾节点…

linux本机进程间通信之UDS

本机进程间通信有很多方式&#xff0c;百度有太多的文章来介绍相关&#xff0c;大致有消息队列、共享内存、socket等、这里重点介绍下socket&#xff08;套接字&#xff09;的一种用法&#xff0c;一般情况下在socket是用于不同主机间的通信&#xff0c;但是当通信双方在同一台…

大模型遇上数智化,腾讯云与行业专家共探行业AI发展之路

引言 自去年底 OpenAI 推出 ChatGPT 起&#xff0c;大模型作为新的生产工具登上了新一轮生产力革命的舞台。事实上&#xff0c;数十年来历经了多次起落的 AI 技术&#xff0c;尽管一直被赋予着极高的期待&#xff0c;但在落地产业端时&#xff0c;却总显得差强人意。大模型的爆…

试题:动态规划

爱吃鬼 小艺酱每天都在吃和睡中浑浑噩噩的度过。 可是小肚子是有空间上限v的。 小艺酱有n包零食&#xff0c;每包零食占据小肚子空间a_i并会给小艺酱一个甜蜜值b_i。 小艺酱想知道自己在小肚子空间上限允许范围内最大能获得的甜蜜值是多少? 使用c和动态规划解题&#xff1a…

伦敦银最新价格能进吗?

不少新手的伦敦银投资者由于看不懂行情走势&#xff0c;在行情机会来临时总感觉患得患失&#xff0c;但由于又十分渴望在这个市场上实现收益&#xff0c;所以经常通过各种各样的方式方法和手段&#xff0c;希望行情走势什么时候会出现进场的机会。 可以肯定的是&#xff0c;伦敦…

大语言模型黑盒被打破;Meta 元宇宙硬件亏损可能高于市场共识丨 RTE 开发者日报 Vol.60

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

2023年中国干毛茶行业总产值、总产量及未来发展趋势分析:茶叶总产量与总产值均实现稳定增长[图]

中国各地持续发力做好“茶文章”&#xff0c;让茶产业成为重要的民生产业。我国是全球最大的茶叶生产国和消费国&#xff0c;2022年全国茶园面积达4995.40万亩&#xff0c;干毛茶总产值再创历史新高&#xff0c;达到3180.68亿元&#xff0c;较上年增加252.6亿元&#xff0c;同比…

Unity之Hololens如何使用ARAnchorManager 锚点系统实现世界锁

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

【python爬虫】闲鱼爬虫,可以爬取商品

目录 前言 一、介绍 二、爬虫流程 1. 确定关键词并构造URL 2. 发送网络请求 3. 解析HTML并提取数据 4. 保存数据 三、使用代理IP 四、完整代码 五、总结 前言 闲鱼是一个很受欢迎的二手交易平台&#xff0c;但是由于没有开放API&#xff0c;我们需要使用爬虫来获取数…

Ubuntu系统 OCR文字识别与 Latex公式识别

一、OCR文字识别 Step1&#xff1a;安装tesseract tesseract 是一个开源的OCR引擎&#xff0c;最初是由惠普公司开发用来作为其平板扫描仪的OCR引擎&#xff0c;2005年惠普将其开源出来&#xff0c;之后google接手负责维护。目前稳定的版本是3.0。4.0版本加入了基于LSTM的神经…

LED显示屏单元板质量好坏如何分辨?

要分辨LED显示屏单元板的质量好坏&#xff0c;可以考虑以下几个关键因素&#xff1a; 分辨率和图像质量 查看显示屏的分辨率和图像质量。高分辨率和清晰的图像通常是质量较高的显示屏的标志。 注意观察图像是否有像素化、色彩失真或亮度不均匀的问题。这里关于LED显示屏的尺寸…

React xlsx(工具库) 处理表头合并

前端导出excel表格 引入xlsx插件&#xff0c;不然应该是运行不起来的 npm i xlsx xlsx中文文档 插件2 exceljs npm i exceljs exceljs中文文档 导出 例子 import { ExportExcel } from ./exportExcel/index;const columns[{title: id,dataIndex: item1,},{title: 序号,dataInd…