微信小程序webgl 显示图片

// wxml
<view class="container"><!-- 加载地图容器 --><canvas type="webgl" id="testMap" style="width: 100%; height: 100%;" disable-scroll bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"></canvas>
</view>
Page({data: {},// 定义全局map变量fmap: null,/*** 生命周期函数--监听页面初次渲染完成*/onReady() {wx.createSelectorQuery().select('#testMap').fields({ node: true, size: true }).exec((res) => {let textCanvas = res[0].node;  // 重点1let gl = textCanvas.getContext('webgl');  // 重点2const vsSource = `attribute vec4 aVertexPosition;attribute vec2 aTextureCoord;varying highp vec2 vTextureCoord;void main(void) {gl_Position = aVertexPosition;vTextureCoord = aTextureCoord;}
`;// Fragment shader source codeconst fsSource = `varying highp vec2 vTextureCoord;uniform sampler2D uSampler;void main(void) {gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x,1.0-vTextureCoord.y));}
`;// Initialize shadersfunction initShaderProgram(gl, vsSource, fsSource) {const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource);const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource);const shaderProgram = gl.createProgram();gl.attachShader(shaderProgram, vertexShader);gl.attachShader(shaderProgram, fragmentShader);gl.linkProgram(shaderProgram);if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {alert('Unable to initialize the shader program: ' + gl.getProgramInfoLog(shaderProgram));return null;}return shaderProgram;}function loadShader(gl, type, source) {const shader = gl.createShader(type);gl.shaderSource(shader, source);gl.compileShader(shader);if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {alert('An error occurred compiling the shaders: ' + gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}const shaderProgram = initShaderProgram(gl, vsSource, fsSource);const programInfo = {program: shaderProgram,attribLocations: {vertexPosition: gl.getAttribLocation(shaderProgram, 'aVertexPosition'),textureCoord: gl.getAttribLocation(shaderProgram, 'aTextureCoord'),},uniformLocations: {uSampler: gl.getUniformLocation(shaderProgram, 'uSampler'),},};// Initialize buffersconst positionBuffer = gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);const positions = [-1.0, 1.0,1.0, 1.0,-1.0, -1.0,1.0, -1.0,];gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);const textureCoordBuffer = gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER, textureCoordBuffer);const textureCoordinates = [0.0, 0.0,1.0, 0.0,0.0, 1.0,1.0, 1.0,];gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(textureCoordinates), gl.STATIC_DRAW);// Load texturefunction loadTexture(gl, cb) {const texture = gl.createTexture();gl.bindTexture(gl.TEXTURE_2D, texture);const level = 0;const internalFormat = gl.RGBA;const srcFormat = gl.RGBA;const srcType = gl.UNSIGNED_BYTE;const image = textCanvas.createImage();image.onload = function () {gl.bindTexture(gl.TEXTURE_2D, texture);gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, srcFormat, srcType, image);gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);cb();};image.src = 'data:image/png;base64,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';return texture;}const texture = loadTexture(gl, () => {render();});// Draw the scenefunction drawScene(gl, programInfo, buffers, texture) {gl.clearColor(0.0, 0.0, 0.0, 1.0);gl.clear(gl.COLOR_BUFFER_BIT);gl.useProgram(programInfo.program);gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);gl.vertexAttribPointer(programInfo.attribLocations.vertexPosition, 2, gl.FLOAT, false, 0, 0);gl.enableVertexAttribArray(programInfo.attribLocations.vertexPosition);gl.bindBuffer(gl.ARRAY_BUFFER, textureCoordBuffer);gl.vertexAttribPointer(programInfo.attribLocations.textureCoord, 2, gl.FLOAT, false, 0, 0);gl.enableVertexAttribArray(programInfo.attribLocations.textureCoord);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D, texture);gl.uniform1i(programInfo.uniformLocations.uSampler, 0);gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);}function render() {drawScene(gl, programInfo, { position: positionBuffer, textureCoord: textureCoordBuffer }, texture);}render();})},
})

最后效果:
在这里插入图片描述

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

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

相关文章

二开PHP泛目录生成源码 可生成新闻页面和关键词页面——码山侠

PS 本资源提供给大家学习及参考研究借鉴美工之用&#xff0c;请勿用于商业和非法用途&#xff0c;无任何技术支持&#xff01; 下载i5i.net 泛目录可以用来提升网站收录和排名 合理运用目录可以达到快速出词和出权重的效果 程序小 基本的服务器都带的得动 打开i5i.net——…

HarmonyOS开发实战( Beta5版)不要使用函数/方法作为复用组件的入参规范实践

概述 在滑动场景下&#xff0c;常常会对同一类自定义组件的实例进行频繁的创建与销毁。此时可以考虑通过组件复用减少频繁创建与销毁的能耗。组件复用时&#xff0c;可能存在许多影响组件复用效率的操作&#xff0c;本篇文章将重点介绍如何通过组件复用四板斧提升复用性能。 组…

惠中科技光伏清洗剂:科技创新引领绿色清洁新风尚

惠中科技光伏清洗剂&#xff1a;科技创新引领绿色清洁新风尚 在光伏产业蓬勃发展的今天&#xff0c;光伏板的清洁问题日益凸显&#xff0c;成为影响发电效率的关键因素之一。面对传统清洗方法效率低、成本高、环境影响大等痛点&#xff0c;惠中科技以科技创新为驱动&#xff0…

HIVE 数据仓库工具之第二部分(数据库相关操作)

HIVE 数据仓库工具之第二部分&#xff08;数据库相关操作&#xff09; 一、Hive 对数据库的操作1.1 创建数据库1.1.1 创建数据库语法1.1.3 示例 1.2 使用数据库1.2.1 使用数据库语法1.2.2 示例 1.3 修改数据库1.3.1 修改数据库的语法1.3.2 示例 1.4 删除数据库1.4.1 删除数据库…

【IT工具】Windows下XMind安装教程【不要米】及常用快捷键

目录 下载相关资料安装改造备注附录&#xff1a;Xmind 快捷键 下载相关资料 下载地址&#xff1a;链接: https://pan.baidu.com/s/1aSvhE_U2WKGQ3oaGvcaHqA?pwd6666 提取码: 6666 安装 双击Xmind.exe安装 安装完成之后&#xff0c;不要登录&#xff0c;关闭就行 改造 …

数据结构(单向链表)

单向链表代码 #ifndef _LINK_H_#define _LINK_H_typedef int DataType;typedef struct node {DataType data;struct node *pnext; }Link_Node_t;typedef struct link {Link_Node_t *phead;int clen; }Link_t;extern Link_t *link_creat(); extern int push_link_head(Link_t *…

2018年系统架构师案例分析试题一

目录 案例 【题目】 【问题 1】(8 分) 【问题 2】(8 分) 【问题 3】(9 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于软件系统设计的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 某文化产业集团委托软件公…

【flask】python框架flask的hello world

创建一个py文件&#xff0c;写如下内容 # save this as app.py from flask import Flaskapp Flask(__name__)app.route("/") def hello():return "Hello, World!"如下图 在此py文件路径下启动cmd&#xff0c;输入 flask run结果如下图 在浏览器中访问…

计算机毕业设计选题推荐-企业人事管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

算法练习: 矩阵置零

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法 要实现这个功能&#xff0c;我们可以使用原地算法。首先&#xff0c;我们需要两个额外的数组来记录哪些行和列需要被置为0。然后&#xff0c;我们遍历整…

3600关成语填字APP游戏ACCESS\EXCEL数据库

成语类的APP游戏在最近一两年内非常的火爆&#xff0c;其主要原因是几乎所有中国人都能够冲个几十上百关&#xff0c;学习和趣味共享。看图猜成语类的数据之前已经弄到过很多&#xff0c;今天这份成语填字的倒是头一份。 该数据做成的APP效果如下&#xff1a; 数据以\符号分隔…

Windows 11 下使用 MSVC 2022 编译64位Nginx

一、软件准备 1、安装 Visual Studio 2022 包含单个组件&#xff1a; .NET Framework 4.6.1 目标包.NET Framework 4.6.1 SDKWindows 通用 C 运行时Windows 通用 CRT SDKMSVC v142 - VS 2019 C x64/x86 生成工具(v14.26)对 v142 生成工具(14.21)的 C/CLI 支持Clang compile fo…

Confluence8.5.14安装

一、Centos8、安装jdk11(略) 二、mysql数据库 1、mysql安装包下载: MySQL :: Download MySQL Community Server 2、安装: https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.37-1.el8.x86_64.rpm-bundle.tar tar -xvf mysql-8.0.37-1.el8.x86_64.rpm-bund…

【Hadoop|HDFS篇】HDFS概述

1. HDFS产出背景及定义 1.1 HDFS产生背景 随着数据量越来越大&#xff0c;在一个操作系统存不下所有的数据&#xff0c;那么就分配到更多的操作系 统管理的磁盘中&#xff0c;但是不方便管理和维护&#xff0c;迫切需要一种系统来管理多台机器上的文件&#xff0c;这 就是分布…

智能化升级:AI在客服知识库中的应用

引言 在数字化时代&#xff0c;客户服务已成为企业竞争的关键一环。随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;传统客服模式正经历着前所未有的变革。AI与客服知识库的深度融合&#xff0c;不仅极大地提升了客服处理的效率与准确性&#xff0c;还为用…

vue3集成sql语句编辑器

使用的是codemirror 安装 pnpm add codemirror vue-codemirror --savepnpm add codemirror/lang-sqlpnpm add codemirror/theme-one-dark使用 <template><codemirror v-model"configSql" placeholder"Code goes here..." ref"codemirrorR…

MIPI(Mobile Industry Processor Interface)

MIPI是指Mobile Industry Processor Interface&#xff0c;移动产业处理器接口&#xff0c;MIPI包含了多种接口&#xff0c;比如DSI显示屏接口、CSI摄像头接口、I3C、RFFE射频前端控制接口和SPMI系统电源管理接口。 车载液晶屏的接口主要使用RGB和LVDS&#xff0c;MIPI接口主要…

html+css+js网页设计 故宫7个页面 ui还原度100%

htmlcssjs网页设计 故宫7个页面 ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1…

汉诺塔的最简单讲解

##从印度佬哥那里学来&#xff0c;所以我想直接引用他画出来的树图 上图为一个经典的三碟盘的汉诺塔的递归树形图。 我们为了将所有碟盘按照从小到大的方式排列在目标处 --- 3 只用三步: 1. 将最小的碟盘和倒数第二的碟盘 全都移动到 2处 也就是中间那个棍子。 2.将最大的碟…

【服务对接】✈️SpringBoot 项目整合华为云 obs 对象存储服务

目录 &#x1f44b;前言 &#x1f440;一、环境准备 &#x1f331;二、整合实现 1.依赖引入 2.准备 AK 和 SK ​ 3.配置类 4.obs 工具类封装 &#x1f49e;️三、测试使用 &#x1f37b;四、 obs 客户端 &#x1f4eb;五、章末 &#x1f44b;前言 小伙伴们大家好&…