回答

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

祝你好运

+0

感谢您的回答。我会试试这个。 – 2010-09-04 17:03:02

+0

实际上我需要什么。 如果有人需要HLSL,那么它是 sampler2D input:register(s0); float4 main(float2 uv:TEXCOORD):COLOR { \t float4 color = 0; \t \t float2 center = float2(0.5,uv.x/2);中心= float2(pow(center.x,1.7),pow(center.y,2.2)); \t center.y = 3.9 * sin(1.8 * uv.x-2.3); \t float2 mcoord = 1.65 * float2(-0.22 + uv.x,1.95 + uv.y); \t uv.x = mcoord.x + center.x; \t uv.y = mcoord.y + center.y; \t color = tex2D(input,uv); \t return(color); } 通过此链接,您可以了解如何使用自定义着色器效果:http://www.silverlight.net/learn/videos/all/pixel-effects/ – 2010-09-05 06:19:05

+0

我们可以使用输入变量获得广义着色器吗? – foson 2011-02-08 22:36:12

0

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