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

产品展示网站php源码建筑学专业大学世界排名

产品展示网站php源码,建筑学专业大学世界排名,自己注册公司多少钱,苏州网站建设的一般流程前言 这篇文章不说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/670623/

相关文章:

  • 做淘宝一样的网站网站视频管理系统
  • 网站wordpress错误公司官网搭建方案
  • 做外汇看哪些网站农八师建设兵团社保网站
  • 襄阳建设网站域名做非法网站
  • 免费网站入口网站免费进ps软件聚美优品网站开发时间进度表
  • 建设信用卡银行积分商城网站网站网页设计html
  • 网站开发公司怎么选择一个网站多少钱
  • 商务网站建设过程wordpress 主题评论
  • 深圳市网站建设哪家好北京网站建设的价格天
  • 网站的分页做不好会影响主页pageadmin官网
  • 医疗集团手机网站建设设计本官方网站广告
  • 网站建设学习多少钱云南热搜科技有限责任公司
  • php网站开发打不开闸北区网站建设网页制作
  • jsp网站开发答辩重庆市建设工程交易中心
  • 人才网网站建设方案哈尔滨专利局申请专利地址
  • 网站建设经济可行性报告iis网站伪静态
  • 网站开发ssh东莞网站建设网站
  • 个人餐饮网站模板做美陈网站
  • 网站关键词从哪改深圳建筑公司招聘信息
  • app网站搭建app首页设计模板
  • 潍坊品牌网站建设信息安全公司前10名
  • 东莞如何编写网站建设网站建设项目设计报告
  • 浏览器大全下载seo优化总结
  • 做qq空间网站wordpress全局jquery
  • 西安网站推广优化网站开发过程 知乎
  • 境外网站在国内做镜像重庆品牌网站建设公司哪家好
  • 公司注册网站模板门户网站建设目的
  • 重庆任务盟网站建设电子商务网站开发基本流程图
  • 门户网站开发简历兴远建设网站
  • 做钓鱼网站教程视频网站制作与网站建设pdf