【问题标题】:How wrap image around cylinder in Silverlight如何在 Silverlight 中将图像环绕在圆柱体周围
【发布时间】:2010-08-31 09:31:42
【问题描述】:

我正在尝试在 Silverlight 中将图像环绕在圆柱体上。我在谷歌上看了很多,但没有找到任何东西。据我所知,它可以用像素着色器完成,但不知道如何。
有可能吗?
谢谢。

【问题讨论】:

    标签: silverlight silverlight-3.0 silverlight-4.0 pixel-shader


    【解决方案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);
    }
    

    从这里

    你会得到类似的东西

    祝你好运

    【讨论】:

    • 感谢您的回答。我会试试这个。
    • 正是我需要的。如果有人在这里需要 HLSL,那就是 sampler2D 输入: register(s0); float4 main(float2 uv: TEXCOORD) : COLOR { float4 color = 0; float2 中心 = 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;颜色 = tex2D(输入,紫外线);返回(颜色);通过此链接,您可以了解如何使用自定义着色器效果:silverlight.net/learn/videos/all/pixel-effects
    • 我们可以得到一个带有输入变量的通用着色器吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-12-16
      • 1970-01-01
      • 2011-09-30
      • 2011-08-23
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      相关资源
      最近更新 更多