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

北京网站建设销售招聘网站开发规格

北京网站建设销售招聘,网站开发规格,行业资讯网站源码,管理咨询顾问是做什么的前言 这篇文章不说WebGL相关概念了,初学者先到网上看看WebGL相关概念。这里着重写一下在vue3前端框架下,如何通过webGL绘制圆点。 着色器代码(画点) 画点相关的着色器代码有顶点着色器和片元着色器,代码如下: 顶点着色器&…

前言

这篇文章不说WebGL相关概念了,初学者先到网上看看WebGL相关概念。这里着重写一下在vue3前端框架下,如何通过webGL绘制圆点。

着色器代码(画点)

画点相关的着色器代码有顶点着色器和片元着色器,代码如下:

顶点着色器:

const vertexShaderSrc = `void main() {gl_Position = vec4(0, 0, 0, 1.0);gl_PointSize = 20.0;}
`;

片元着色器:

const fragmentShaderSrc = `void main() {gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);}
`;

初始化着色器

在网上找的一个通用的初始化着色器代码,如下所示:

function loadShader(gl, type, source) {//根据着色类型,建立着色器对象const shader = gl.createShader(type);//将着色器源文件传入着色器对象中gl.shaderSource(shader, source);//编译着色器对象gl.compileShader(shader);//返回着色器对象return shader;
}
export function initShaders(gl, vsSource, fsSource) {//创建程序对象const program = gl.createProgram();//建立着色对象const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource);const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource);//把顶点着色对象装进程序对象中gl.attachShader(program, vertexShader);//把片元着色对象装进程序对象中gl.attachShader(program, fragmentShader);//连接webgl上下文对象和程序对象gl.linkProgram(program);//启动程序对象gl.useProgram(program);//将程序对象挂到上下文对象上gl.program = program;
}

代码中注释蛮详细的。

vue3框架使用webGL画点

这里直接贴上全部代码了,如下所示:

<template><div class="point-wrapper"><div style="margin-bottom: 20px">绘制点</div><canvas id="point" width="100" height="100"></canvas></div>
</template><script>
export default {name: "point",
};
</script><script setup>
import { onMounted } from "vue";
import { initShaders } from "@/utils/myGL.js";const vertexShaderSrc = `
void main() {gl_Position = vec4(0, 0, 0, 1.0);gl_PointSize = 20.0;
}
`;const fragmentShaderSrc = `
void main() {gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
`;const fragmentShaderSrcCircle = `
precision mediump float;
void main() {float d = distance(gl_PointCoord, vec2(0.5, 0.5));if(d < 0.5) {gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);} else { discard; }
}
`;onMounted(() => {const canvas = document.getElementById("point");// webgl画笔const gl = canvas.getContext("webgl");// 初始化着色器initShaders(gl, vertexShaderSrc, fragmentShaderSrc);// 指定将要用来清理绘图区的颜色gl.clearColor(0.0, 0.0, 0.0, 1.0);// 清理绘图区gl.clear(gl.COLOR_BUFFER_BIT);// 绘制顶点gl.drawArrays(gl.POINTS, 0, 1);setTimeout(() => {initShaders(gl, vertexShaderSrc, fragmentShaderSrcCircle);// 指定将要用来清理绘图区的颜色gl.clearColor(0.0, 0.0, 0.0, 1.0);// 清理绘图区gl.clear(gl.COLOR_BUFFER_BIT);// 绘制顶点gl.drawArrays(gl.POINTS, 0, 1);}, 5000);
});
</script><style lang="scss" scoped>
.point-wrapper {width: 200px;height: 200px;background-color: gray;
}
</style>

myGL.js中放的是初始化着色器initShaders 接口。

大家可以拷贝代码运行一下,刚开始出现一个正方形点,5秒后变成圆点

http://www.yayakq.cn/news/211013/

相关文章:

  • 各网站推广深圳自适应网站推广价格
  • 外贸网站建设推广公司价格深圳网络营销公司
  • 文化建设包括哪些网站优化检测工具
  • 福田专门做网站推广公司网站设计重要性
  • 任县网站建设价格信息有做酒席酒水网站吗
  • wordpress 查看站点合肥建设银行网站首页
  • 自己怎么做企业网站哈尔滨搜索引擎排名
  • 石家庄建设工程信息网站海淀区网站建设
  • 潍坊网站排名推广58同城如何发广告
  • 网站如何做移动适配前端seo是什么意思
  • 机器配件做外贸上什么网站黄骅贴吧二手房
  • 宁波网站建设营销定制discuz x3.2整合wordpress
  • 美食网站开发目的二维码在线生成
  • 青海制作网站在线网站免费网站入口
  • 网站建设运营法律风险防范沈阳网站设计开发
  • 南昌做网站电话商务网站建设实训心得体会
  • 网站建设项目申请wordpress 开发api
  • 外包公司 网站建设 上海网站设计基本流程
  • 网站百度地图怎么做本地网站搭建教程
  • 代做毕设的网站园林在线设计平台
  • 企业建网站开发网站上如何做相关推荐
  • 永久免费的网站空间百度快照怎么看
  • 中国信誉建设网站微网站套餐
  • 做淘宝客如何引出图片到网站网页版qq游戏大厅
  • 建设门户网站的请示网站建设网站徒手整形培训
  • 专业装修设计网站国外物流公司网站模板
  • 做网站的那些事专业外贸网站建设公司排名
  • 做淘宝网站买个模版可以吗嘉兴建站网站模板
  • 公司网站横幅如何做网络推广的基本渠道
  • 盐山县做网站珠宝首饰商城网站建设