2017-09-05 82 views
1

glSecondaryColor允許指定第二種顏色。這第二種顏色對於什麼有用?什麼是OpenGL次要顏色有用?

我檢查了kronos reference,它並沒有太大的幫助:

局部色彩插值並啓用GL_COLOR_SUM當光柵化過程中應用到每個片段 。如果啓用了照明 ,並且指定了GL_SEPARATE_SPECULAR_COLOR,則會爲照明計算的鏡面術語 分配從屬值的 次色。在這樣的條件下,無論GL_COLOR_SUM的狀態如何,主電流和次電流 的顏色都被應用於每個片段。當指定GL_SEPARATE_SPECULAR_COLOR 時,查詢當前輔助顏色 返回的值是未定義的。

這種二次色彩的東西甚至可能看起來像舊GL版本的剩菜...我錯了嗎?

回答

7

在固定功能照明模型中,主要顏色和/或紋理顏色應用於漫反射照明鏡面照明。因此,黑色表面不可能有光澤,因爲黑色原色/紋理色彩會被乘以鏡面光照,使其實際上爲零。

提供輔助顏色並啓用GL_SEPARATE_SPECULAR_COLOR意味着高光照明值將被乘以二次色而不是原色。所以你可以有一個黑色的主要/紋理顏色,輔色爲1.0。即使在表面的黑暗區域,也可以讓您擁有明亮的閃亮高光。

當然,這是在GL 3.1中丟棄的所有固定功能垃圾。使用着色器,您可以擁有任何可以編碼的照明模型。