我想渲染我的四邊形內使用着色器和一個對象文件(.pod)的紋理的一部分,這只是容器格式的持有頂點,法線和UV。如何渲染使用着色器的opengl中的四邊形內的紋理的一部分
所以,試想一下,我使用3ds max製作了一個簡單的四邊形,並將其導出爲.pod,並將其導入到我的場景中,從世界到MVP。它具有UV作爲(0,0)(1,0)(0,1)(1,1)
..現在我有一個1024x128
像素的紋理(.pvr)。我已經使用適當的緩衝區將所有數據從cpp發送到頂點着色器,並且一切正常。
現在的問題是,我想渲染一些紋理,可以說,從200,30(left,bottom)
像素到500,100(width,height)
。
如何使用頂點着色器實現上述效果。我已經在頂點着色器中編寫了一些邏輯,對我來說,它適用於(0,0)
座標,但是如何定義高度和寬度,因爲只有一個vec2變量。下面是頂點着色器的邏輯...
varying mediump vec2 TexCoord;
attribute mediump vec2 inTexCoord;
TexCoord.x = inTexCoord.x * (1024.0/(1024.0-200.0))-(200.0/1024.0);
TexCoord.y = inTexCoord.y * (128.0/(128.0-30.0))-(30.0/128.0);
相同的邏輯和價值觀正在爲所有的UV,不知道該怎麼提高度,寬度在裏面。上面的代碼正在做一些技巧,但不是我所期待的。它正在重複四邊形內的紋理。 相反,我只想渲染紋理的一部分(200,30,500,100)(l,b,w,h)
,在四邊形內部也顯示四邊形的黑色邊界,從0-127
像素和0-30
像素分別從左邊和底部,黑色邊框從629th
像素到1024
從右邊。
我正在試圖製作一個視頻牆項目,電視將以不同的角度旋轉。
聽起來像你想的着色信箱什麼的。你可以做到這一點,但我個人會改變你映射到的幾何圖形來適應,即改變代表屏幕的矩形區域的方面,而不是在着色器中擺弄。 – Robinson
你的計算看起來不對。我不確定你從哪裏得到這個公式。 – BDL