2012-12-17 16 views
0

我有一個折線點(x,y)的數組。每次我要處理3個相鄰點並生成2個輸出點。OpenGL ES 2.使用3個相鄰點的參數着色2點的着色器?

例如,這樣的事情:

void someFunc(float x0, float y0, float x1, float y1, float x2, float y2, float *pXout1, float *pYout1, float *pXout2, float *pYout2) 
{ 
    *xout1 = x1 - 1; 
    *xout2 = x1 + 1; 
    *yout1 = MIN(y0, y2); 
    *yout2 = MAX(y0, y2); 
} 

所以我有2個問題,這我應該在我的頂點着色器:

1)如何在一次輸入幾個鄰居點? 2)如何一次輸出多個點?

+0

你用指針做的方式是可以的。此外,您可以使用數組進行輸入和輸出,或創建自定義類 – tkanzakic

+0

對於常用函數來說是正確的,但對着色器來說看起來非常困難。我目前的臨時解決方案是3個陣列(對於每個點及其2個相鄰點)。我還將這些點放在這些數組中,因爲可以選擇另一個int數組(xout1,yout1)或(xout2,yout2)。 – user1826689

回答

1

1)如何輸入幾個鄰居點一次?

頂點着色器沒有能力輸入相鄰頂點數據。如果你真的需要這個,那麼你可以通過提供相鄰的頂點數據(與提供顏色,法線等相同的方式)通過冗餘頂點屬性來實現。

2)如何一次輸出幾點?

你的意思多個頂點數據傳遞給片段着色器?如果是這樣,那麼同樣的規則適用於問題#1,只有你應該使用冗餘變化。

+0

感謝您的回覆 – user1826689