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

webGL入门(六)图形旋转

效果:

代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>var webgl// shader参数var vsString = `attribute vec3 a_position;uniform float angle;void main(){gl_Position = vec4(a_position.x*cos(angle)-a_position.y*sin(angle),a_position.x*sin(angle)+a_position.y*cos(angle),0,1.0);}` // 顶点着色器字符串var fsString = `void main(){gl_FragColor = vec4(1.0,0.0,0.0,1.0);}` // 片元着色器字符串function init(){initWebgl()initShader()initBuffer()draw()}function initWebgl(){let webglDiv = document.getElementById('webgl_canvas')webgl = webglDiv.getContext("webgl")webgl.viewport(0,0,webglDiv.clientWidth,webglDiv.clientHeight)}function initShader(){// 创建shaderlet shaderVS = webgl.createShader(webgl.VERTEX_SHADER)let shaderFS = webgl.createShader(webgl.FRAGMENT_SHADER)// 绑定shader字符串webgl.shaderSource(shaderVS,vsString)webgl.shaderSource(shaderFS,fsString)// 编译shaderwebgl.compileShader(shaderVS)webgl.compileShader(shaderFS)// 判断shader是否编译成功let program = webgl.createProgram()webgl.attachShader(program,shaderVS)webgl.attachShader(program,shaderFS)// 链接programwebgl.linkProgram(program)webgl.useProgram(program)webgl.program = program}function initBuffer(){let arr = [0.1,0.4,0.0,0.1,0.5,0.0,0.2,0.4,0.0,]let float = new Float32Array(arr)let buffer = webgl.createBuffer()webgl.bindBuffer(webgl.ARRAY_BUFFER,buffer)webgl.bufferData(webgl.ARRAY_BUFFER,float,webgl.STATIC_DRAW)let aPosition = webgl.getAttribLocation(webgl.program,"a_position")webgl.vertexAttribPointer(aPosition,3,webgl.FLOAT,false,0,0)webgl.enableVertexAttribArray(aPosition)let uAngle = webgl.getUniformLocation(webgl.program,"angle")let angle1 = 90 * Math.PI / 180webgl.uniform1f(uAngle,angle1)}function draw(){webgl.clearColor(0.0,1.0,1.0,1.0)webgl.clear(webgl.COLOR_BUFFER_BIT)webgl.drawArrays(webgl.TRIANGLES,0,3)}</script>
</head>
<body onload="init()"><canvas id="webgl_canvas" width="500" height="500"></canvas>
</body>
</html>

复盘总结:


http://www.mrgr.cn/news/42526.html

相关文章:

  • 快速点特征直方图 (FPFH) 描述符 和 点特征直方图 (PFH) 描述符 的差异
  • Redis篇(面试题 - 连环16炮)(持续更新迭代)
  • 数据链路层(以太网简介)
  • 24年最新大众点评数据
  • 【深度学习基础模型】回声状态网络(Echo State Networks, ESN)详细理解并附实现代码。
  • Vue2如何在网页实现文字的逐个显现
  • 69.【C语言】动态内存管理(重点)(2)
  • 【60天备战2024年11月软考高级系统架构设计师——第36天:系统安全设计——数据加密】
  • 【微服务】负载均衡 - LoadBalance(day4)
  • 我与世界的联系---读书
  • 【MySQL】Ubuntu环境下MySQL的安装与卸载
  • IEC104规约的秘密之六----配置参数k,w
  • 数据库管理-第247期 23ai:全球分布式数据库-Schema对象(20241004)
  • 基于Springboot+Vue的在线项目管理与任务分配中的应用 (含源码数据库)
  • 2024软件测试面试大全(含答案+文档)
  • 2024最新软件测试面试八股文
  • 基础算法--枚举
  • 第18场小白入门赛(蓝桥杯)
  • TryHackMe 第6天 | Web Fundamentals (一)
  • NIM简单实践-图像分割