WebGL 理论基础 - 二维缩放

转载自知乎

本文原文地址:https://zhuanlan.zhihu.com/p/56594572

---------------------------------------------------------

此文上接一系列文章,先从基础概念开始,上一篇是物体旋转

缩放和平移一样简单。

让我们将位置乘以期望的缩放值,这是前例中的变化部分。

<script id="2d-vertex-shader" type="x-shader/x-vertex">
attribute vec2 a_position;

uniform vec2 u_resolution;
uniform vec2 u_translation;
uniform vec2 u_rotation;
uniform vec2 u_scale;

void main() {
  // 缩放
  vec2 scaledPosition = a_position * u_scale;

  // 旋转
  vec2 rotatedPosition = vec2(
     scaledPosition.x * u_rotation.y + scaledPosition.y * u_rotation.x,
     scaledPosition.y * u_rotation.y - scaledPosition.x * u_rotation.x);

  // 平移
  vec2 position = rotatedPosition + u_translation;

然后需要在 JavaScript 中绘制的地方设置缩放量。

...

  var scaleLocation = gl.getUniformLocation(program, "u_scale");

  ...

  var scale = [1, 1];

  ...

  // 绘制场景
  function drawScene() {

    ...

    // 设置平移
    gl.uniform2fv(translationLocation, translation);

    // 设置旋转
    gl.uniform2fv(rotationLocation, rotation);

    // 设置缩放
    gl.uniform2fv(scaleLocation, scale);

    // 绘制几何体
    var primitiveType = gl.TRIANGLES;
    var offset = 0;
    var count = 18;  // 6 个三角形组成 'F', 每个三角形 3 个点
    gl.drawArrays(primitiveType, offset, count);
  }

现在我们有了缩放,拖动滑块试试。

CodePen 地址:https://codepen.io/princessgod/pen/omMgdJ?editors=1010

值得一提的是,缩放值为负数的时候会翻转几何体。

希望之前的3篇文章能够帮助你理解平移,旋转和缩放。接下来我们将使用矩阵,这三种操作将包含在一个矩阵中,并表现为一种常用形式。

END

获得更多信息

关注公众号

WebGL 理论基础 - 基础概念

WebGL 理论基础 - 工作原理

WebGL 理论基础 - 着色器和 GLSL

WebGL 理论基础 - 图像处理 上

WebGL 理论基础 - 图像处理 下

WebGL 理论基础 - 二维平移

WebGL 理论基础 - 二维旋转

技术交流qq群:850038125

微信群:

webgl-fingerprint-defende.crx 是一个浏览器扩展文件,它的作用是提供WebGL指纹防御功能。WebGL是一种用于在网页浏览器中渲染3D图形的技术,而指纹则是通过收集浏览器和计算机的信息来识别用户身份的一种方法。 通常,浏览器会从操作系统和硬件中收集一些信息来创建一个独特的指纹识别码。这个识别码可以随着浏览器的使用而变化,因此可以用作用户识别。然而,一些网站可能会滥用这种技术来跟踪用户的在线行为,侵犯用户隐私。 webgl-fingerprint-defende.crx 文件可以帮助用户保护自己的隐私,防止被WebGL指纹识别出来。它通过修改浏览器的WebGL指纹数据,使之变得随机或无法识别。这样,即使网站尝试使用WebGL指纹进行用户跟踪,也无法准确识别用户的真实身份。 使用 webgl-fingerprint-defende.crx 文件可以有效地防止被WebGL指纹追踪,保护用户的个人隐私。它的安装和使用也非常简单,只需将文件添加到浏览器的扩展管理页面即可。然后,在用户浏览网页时,该扩展将自动激活并对WebGL指纹进行保护。 需要注意的是,虽然这个扩展可以有效防止WebGL指纹追踪,但在使用时仍需注意个人隐私的其他方面。同时,由于浏览器和WebGL技术的不断更新和演变,扩展的效果可能会有所变化。因此,保持扩展的更新和关注相关的隐私保护措施是很重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值