2013-01-19 86 views
0

我想通過在後處理着色器中轉換它來查看平面全屏紋理,因爲它是球形的。在GLSL中應用自定義投影矩陣(對texturecoordinate)

我想我必須將投影矩陣應用於着色器中的紋理座標。

我發現這個網站:http://www.songho.ca/opengl/gl_projectionmatrix.html它瞭解了很多關於投影矩陣的內容。

但我該如何應用它?我想我必須將投影矩陣的第三行乘以紋理座標,並添加一個計算出的z值使其成爲球形。儘管我的努力沒有顯示任何結果。

編輯:我在這裏看到了同樣的問題:http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2008-April/009765.html

+0

「*查看全屏平質地,因爲它是球形*」所以,你要映射一個矩形的球?我真的不知道投影矩陣如何幫助你。 –

+0

我簡化了這個問題,因爲我一開始沒有得到答覆。它被稱爲我學到的投影紋理映射,在我的情況下,在後期處理中添加紋理(精確地將skycube動畫化)。 – RobotRock

回答

1

我想你乘以投影矩陣文本COORDS後你必須做出透視除法和3D移動到2D(因爲紋理是2D)。這與陰影映射相同。

// in fragment shader: 
vec4 proj = uniformModelViewProjMatrix * tex_coords; 
proj.xyz /= proj.w; 
proj.xyz += vec3(1.0); 
proj.xyz *= 0.5; 
vec4 col = texture2D(sampler, proj.xy); 

或看http://www.ozone3d.net/tutorials/glsl_texturing_p08.php(爲texture2DProj

+0

這確實有助於我,我不知道這樣做的做法。如果我理解正確,我使用特定的「w」作爲實際轉換,其中「w」由FOV應用(使用畢達哥拉斯我做了一些計算)。 – RobotRock