2010-09-05 110 views
1

我注意到舊代碼有GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR等與glMaterialfv輸入。現代GLSL代碼中的代碼如何取代?現代OpenGL顏色

例如假設庫導入模型(Assimp)爲這些顏色類別提供直接值,它們是否仍然可以直接使用(在覈心上下文中)?

回答

2

是的,至少有一些(儘管當然,在現代代碼中,你處理着色器中的大部分計算)。

一種典型的可能性是使用uniform s來表示環境顏色,光照位置和眼睛位置等。然後設置一對varying s,用於傳遞漫反射顏色和鏡面反射從頂點着色器到片段着色器的顏色。您的頂點着色器根據uniform輸入計算那些varying的值。

片段着色器然後接收(例如)紋理和上述varying s和一起組合它們(與您可能需要的任何其他的輸入一起)以產生用於該片段的最終顏色(其分配到gl_FragColor )。

+1

最近不同意了。 – 2010-09-06 07:50:20

+1

@Lela Dax:是的,但它不會改變方法的有效性。改變輸入/輸出對是微不足道的。 – Bahbar 2010-09-06 09:27:57

+0

也許用in/out更新答案,或者至少提到他們已經取代了uniform/varying? – AzP 2013-03-26 15:23:15