如何在Silverlight中将图像围绕圆柱体包裹

5

我正在尝试在Silverlight中将图像包裹在圆柱体周围。我在Google上搜索了很多,但没有找到任何有用的信息。据我所知,这可以通过像素着色器来实现,但我不知道具体如何操作。
这个方法可行吗?
谢谢。

2个回答

1

这不是完全的圆柱体包裹,但你会得到一个起始的想法/示例:

(代码使用GLSL而非HLSL编写,但我认为将其转换并不难)

uniform sampler2D tex;

void main()
{
 vec2 cen = vec2(0.5,gl_TexCoord[0].y)-gl_TexCoord[0].xy;
 cen = vec2(pow(cen.x,1.7),pow(cen.y,2.2));
 cen.y = 3.9*sin(1.8*gl_TexCoord[0].x-2.3);
 vec2 mcoord = 1.65*vec2(-0.22+gl_TexCoord[0].x,1.95+gl_TexCoord[0].y);
 gl_FragColor = texture2D(tex, mcoord+cen);
}

从这里开始

alt text

你会得到类似这样的东西alt text

祝你好运


这正是我所需要的。 如果有人需要HLSL,这里就有了sampler2D input : register(s0);float4 main(float2 uv : TEXCOORD) : COLOR { float4 color = 0; float2 center = float2(0.5, uv.x / 2); center = float2(pow(center.x, 1.7),pow(center.y, 2.2)); center.y = 3.9 * sin(1.8 * uv.x - 2.3); float2 mcoord = 1.65 * float2(-0.22 + uv.x, 1.95 + uv.y); uv.x = mcoord.x + center.x; uv.y = mcoord.y + center.y; color = tex2D(input, uv); return(color); }通过此链接,您可以学习如何使用自定义着色器效果:http://www.silverlight.net/learn/videos/all/pixel-effects/ - Samvel Siradeghyan
我们能否获得一个带有输入变量的通用着色器? - foson

0

你可以尝试使用Zam3d。我之前使用过试用版本,你可以获取3D形状并尝试将背景设置为图像。看看这是否有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接