2014-06-20 52 views
2

我想在OpenGL中呈現一組紋理四邊形,但我想知道是否有任何方法將每個四邊形的唯一整數id傳遞給着色器管道?將整數呈現爲GLSL中的單獨紋理

該ID需要可用於片段着色器,以便它可以呈現爲紋理,與圖像的其餘部分分開,因爲我想稍後參考紋理以找出在什麼位置上的id屏幕。

+1

你在這裏說幾個四邊形?在片段階段中有'gl_PrimitiveID',但如果繪製超過256個四邊形(或128個,如果每個都分成兩個三角形),則會溢出一般(8位)單通道圖像格式。那麼你將不得不在多個通道上編碼你的ID;不是非常困難,但在這點上使用單通道16/32位整數紋理可能會更好。 –

+0

我可能會有很多,因爲我將使用該系統進行等距比賽,並打算將其用於運動,攻擊敵人,拾取物品,移動門等。我想我更喜歡32位整數紋理的選項,以減少發生任何衝突的可能性,特別是當我想使用高位字節作爲該點對象類型的標誌時 – webwraith

回答

2

確定ID的另一個頂點屬性並將其傳遞給片段着色器。

您可以設置Multiple Render Targets (MRT)將您的ID呈現給另一個幀緩衝附件。

+2

似乎有點浪費內存。 'gl_PrimitiveID'會做同樣的事情,不需要增加額外的頂點屬性。 –