请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

两个片段宽高不一致时,转场特效变成了缩放的形式

辛苦老师帮忙解答下原因:
将两个不同尺寸的视频拼接在一起,在surfaceview展示视频的时候首先经过正交投影等处理之后,再添加转场特效,最终展现的效果是,两个片段尺寸相同的正常展示转场特效,如果不相同就会变成缩放的特效,shader的脚本如下:
#define TRANSITION_VERTEX_SHADER_SOURCE R"(#version 320 es
layout (location = 0) in vec4 aPosition;
layout (location = 1) in vec2 aTexCoord;
out vec2 vTexCoord;
uniform mat4 uMVPMatrix1;
uniform mat4 uMVPMatrix2;
uniform float uProgress1;
void main() {
vec4 pos1 = uMVPMatrix1 * aPosition;
vec4 pos2 = uMVPMatrix2 * aPosition;
gl_Position = mix(pos1, pos2, smoothstep(0.0, 1.0, uProgress1));
vTexCoord = aTexCoord;
}
)"

#define TRANSITION_FRAGMENT_SHADER_SOURCE R"(#version 320 es
precision mediump float;
in vec2 vTexCoord;
out vec4 FragColor;
uniform sampler2D uLastTexture;
uniform sampler2D uNextTexture;
uniform float uProgress;
void main() {
vec4 lastColor = texture(uLastTexture, vTexCoord);
vec4 nextColor = texture(uNextTexture, vTexCoord);
// 使用更明显的混合效果
FragColor = mix(lastColor, nextColor, smoothstep(0.0, 1.0, uProgress));
}
)"
这是个淡入淡出的转场特效

正在回答 回答被采纳积分+3

1回答

李超 2024-09-30 15:43:11

宽高不一样你第一步要做的是把它们的宽高设置成一样的,并且最好让他们的宽高比是一种标准的宽高比,16:9或4:3,或反过来9:16,3:4

0 回复 有任何疑惑可以回复我~
  • 提问者 慕运维2361320 #1
    要是这样的话,有些尺寸的图片会被裁剪了,不想裁剪想等比全部显示
    回复 有任何疑惑可以回复我~ 2024-09-30 16:37:04
  • 李超 回复 提问者 慕运维2361320 #2
    你也可以把小的放大呀
    回复 有任何疑惑可以回复我~ 2024-10-02 00:13:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信