2010-08-31 112 views

回答

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形狀,並嘗試將背景設置爲圖像。看看,看看是否有幫助。