我需要在图像上制作类似运动效果的东西。为此,我需要缩放原始图像并将其绘制在未缩放的原始图像上,并具有一定的透明度。
如何在opengl着色器中做到这一点?
你不需要一个特定的着色器,你可以在第二个被缩放的地方绘制 2 个纹理矩形。为了确保 2 个图像之间的混合使用“glColor4f”或在 2 个绘图调用之间使用类似的东西(在第二个绘图调用设置 color4f(1,1,1,.5f) 之前),但不要忘记将其设置回 ( 1,1,1,1) 抽签后。
如果你真的需要在着色器的一次调用中执行此操作:使用最常见的着色器来绘制纹理形状,添加一些“缩放”参数作为输入。然后
vec2 scaledCoordinate = vec2((texCoord.x-.5)/scale + .5, (texCoord.y-.5)/scale + .5)
然后使用这样的东西:
gl_FragColor = mix(texture2D(texture, texCoord), texture2D(texture, scaledCoordinate), .5);