2012-09-06 143 views
22

當在GLSL(a uniform sampler2D)中採樣2D紋理時,將使用texture函數,並從採樣器(此例中爲2D)推斷出尺寸。這是從1.30開始在GLSL中採樣紋理的現代方式(GLSL Reference Pages)。但是,您也可以使用texture2D功能。GLSL中的紋理vs texture2D

是否已棄用texture2D函數,如果有,是否支持texture2D函數在某些版本的GLSL中被刪除(或已被刪除)?

回答

28

是的,從(至少)開始,不推薦使用texture2D()OpenGL 3.3;請參閱3.30 GLSL specification的第99頁。它將繼續在OpenGL兼容性配置文件中得到支持,以避免破壞現有代碼,但強烈建議不要在新代碼中使用它。

EDIT:細節對於OpenGL ES的略有不同,但最終的結果是相同的:的Texture2D()已過時,通過在OpenGL ES 3.0紋理()取代;請參閱3.0 GLSL ES specification的第8.8節。

+3

在原始問題中沒有提及OpenGL ES,所以我認爲我們正在談論香草GL。如果GL ES的答案不同,那當然值得一提;我會更新我的答案(除非其他人想要參加)。 – postgoodism

+8

@Jessy考慮到這個問題沒有提到任何ES(甚至沒有反對,也沒有提到GLSL 1.30,或者**中提到的紋理函數**),你的評論並沒有提到,真的有道理。事實上(或者它是否是一個?)大多數人使用OpenGL ES並不奇怪地使這個完全正確的答案毫無意義。因爲你期待一個無題的回答(無論出於何種原因)並不會突然在主題外做出主題回答。 –

+0

因此,如果在OpenGL上使用'texture()',而在OpenGL ES上使用'texture2D()',那麼答案就是這樣?我會希望有一個功能。 – Zebrafish