- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的 webgl slider 使用不同的过渡效果,您也可以使用自己的过渡效果。使用的转换来自 https://gl-transitions.com/我想用的是这个: https://gl-transitions.com/editor/randomsquares
问题是我收到ivec2未定义错误...webgl 新手...
我已经设法实现其他效果,但我不明白如何处理 ivec2。它是一个数组吗?
const uniforms = {
size: ivec2(10, 10),
smoothness: 0.5
};
const shader = [
'uniform ivec2 size; // = ivec2(10, 10)',
'uniform float smoothness; // = 0.5',
'float rand (vec2 co) {',
'return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);',
'}',
'vec4 transition(vec2 p) {',
'float r = rand(floor(vec2(size) * p));',
'float m = smoothstep(0.0, -smoothness, r - (progress * (1.0 + smoothness)));',
'return mix(getFromColor(p), getToColor(p), m);',
'}'
].join( '\n' );
GLSlideshow.addShader( 'myShader', shader, uniforms );
loader.whenReady = function() {
var slideshow = new GLSlideshow(
[ 'img/1.jpg', 'img/2.jpg', 'img/3.jpg', 'img/4.jpg' ],
{
canvas: document.getElementById( 'myCanvas' ), // optional
width: 1024, // optional
height: 576, // optional
duration: 5000, // optional
interval: 3000, // optional
effect: 'myShader'
}
);
}
最佳答案
[查看源码](查看源码)不支持ivec2。
此外,第二行 size: ivec2(10, 10)
来自某个库,或者是您编写的一些代码,与 WebGL 无关。 JavaScript 中不存在 ivec2
这样的东西。它与您正在使用的库或您自己的代码有关。
简单的解决方案,使用 size: [10, 10]
并将着色器中的每个 ivec2
更改为 vec2
。
const uniforms = {
size: [10, 10],
smoothness: 0.5
};
const shader = `
uniform vec2 size; // = vec2(10, 10)
uniform float smoothness; // = 0.5
float rand (vec2 co) {
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
vec4 transition(vec2 p) {
float r = rand(floor(vec2(size) * p));
float m = smoothstep(0.0, -smoothness, r - (progress * (1.0 + smoothness)));
return mix(getFromColor(p), getToColor(p), m);
}
`;
GLSlideshow.addShader( 'myShader', shader, uniforms );
// since we can't use images because gl-slideshow doesn't support CORS
// let's use canvases
var slideshow = new GLSlideshow(
[
makeImage('A', 'red', 'cyan'),
makeImage('B', 'green', 'magenta'),
makeImage('C', 'blue', 'yellow'),
makeImage('D', 'black', 'white'),
],
{
canvas: document.getElementById( 'myCanvas' ), // optional
duration: 1000, // optional
interval: 2000, // optional
effect: 'myShader'
}
);
// ----------------------------
function makeImage(str, bg, fg) {
const ctx = document.createElement('canvas').getContext('2d');
ctx.canvas.width = 128;
ctx.canvas.height = 128;
ctx.fillStyle = bg;
ctx.fillRect(0, 0, 128, 128);
ctx.fillStyle = fg;
ctx.font = "bold 110px sans-serif";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.fillText(str, 64, 64);
return ctx.canvas.toDataURL(); // gl-slideshow doesn't handle canvas so we need to make a data URL
}
<script src="http://unpkg.com/GLSlideshow@2.1.0/dist/gl-slideshow.js"></script>
<canvas id="myCanvas"></canvas>
关于javascript - ivec2 未在带有 gl 过渡的 webgl slider 上定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58696350/
背景 我正在设计一个系统,该系统可以为静态 Web 内容的用户开发动态身份验证方案。其动机是预先生成大量复杂但敏感的 Web 内容,然后使用基于 cookie(嵌入可逆加密信息)的身份验证静态地提供它
我很无聊,写了一个围绕 openSSL 的包装器来用更少的工作进行 AES 加密。如果我这样做: http://pastebin.com/V1eqz4jp (ivec = 0) 一切正常,但默认的iv
我有一个包含多个 GLSL 程序 (OpenGL 3.3) 的场景。这些程序使用不同的着色器,它们很相似,但(将)有一些差异。我有一个统一的ivec4 char1,所有版本的名称都相同,它对所有程序具
我是一名优秀的程序员,十分优秀!