【p5js shader翻译教程】1.4 在p5.js中设置shader

该文章为翻译而来,原文链接:
https://itp-xstory.github.io/p5js-shaders/#/./docs/setting-up-shaders-in-p5

该系列翻译文章将不定期更新,将用于学习记录,若有侵权,请联系我。

1.4 在p5.js中设置shader

现在我们知道了什么是shader,以及它与之前写的p5js代码有什么不同,让我们看看p5中shader的一个简单例子,这样我们就可以开始写我们自己的shader了!

我们先看一下p5.js的代码。

首先,我们创建一个变量,用来存放我们的p5草图中的shader

let theShader;

然后,我们必须预先加载我们的shader文件,并将其存储在我们的shader变量中,使程序在运行其setup() or draw() 函数之前加载它们。我们的shader需要两个文件,这一点稍后再谈。

function preload(){
  theShader = loadShader('shader.vert', 'shader.frag');
}

现在在setup()函数中,我们创建画布。p5.js中的shader是使用WebGL渲染的,所以我们必须确保在createCanvas()函数中指定WEBGL作为第三个参数。

我们还为这个例子指定了noStroke(),所以我们的shader是无边界的。

function setup() {
  createCanvas(200,200,WEBGL);
  noStroke();
}

现在在draw()函数中,我们必须使用内置的shader()函数设置我们的活动shader,并为shader创建一个p5js中的矩形。

你可以将shader应用于任何形状,除非你在代码中指定一个形状,否则shader不会工作。

function draw() {
  shader(theShader);
  rect(0,0,width,height);
}

完整代码如下。

// a shader variable
let theShader;
function preload(){
  // load the shader
  theShader = loadShader('shader.vert', 'shader.frag');
}

function setup() {
  // shaders require WEBGL mode to work
  createCanvas(windowWidth, windowHeight, WEBGL);
  noStroke();
}

function draw() {
  // shader() sets the active shader with our shader
  shader(theShader);
  // rect gives us some geometry on the screen
  rect(0,0,width,height);
  // print out the framerate
  //  print(frameRate());
}

function windowResized(){
  resizeCanvas(windowWidth, windowHeight);
}

这就是p5js中加载shader的代码! 现在你知道如何将shader加载到p5中。下一节我们将看看如何编写shader

上文是本地编辑代码部分,原文中还有两个设置,可以在线编辑代码(p5.js Editor和Glitch),但国内不好打开,故这边我就没有翻译了,感兴趣的小伙伴可以上开头的链接查看。

写在最后

我创建了一个公众小号【p5js艺术小站】,里面会更新各种作品、教程等精彩内容,欢迎各位大佬关注指导,共同进步!!!

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxwonder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值