2011-01-27 16 views
1

很暗紋理我認爲,當你申請一個顏色在OpenGL紋理的對象時,它乘以glColor的顏色和紋理數據的顏色來判斷實際上把什麼顏色。這對於淺色紋理來說很好,但它對於嘗試着色更深的紋理是一個問題,因爲如果你的紋理髮黑並嘗試着色成紅色,它仍然會變成同樣陰暗的黑色。有沒有人知道任何黑客或技術來設置glColor時顯着減輕黑暗紋理的顏色?Colorozing在OpenGL

回答

0

第一照亮所述紋理,則上色如常。

要亮的質感,兩個基本技術:

  • 添加劑增白:添加一個恆定值,每一個紋理像素。
  • 乘增亮:由大於1例如大的值乘以每紋素將所有東西都乘以1.1,亮度爲+ 10%。
1

你描述的這種情況是基本的GL_MODULATE行爲,這是一個普通的簡單乘法。

根據什麼平臺,或GL版本上,你可以,你可以考慮:

  • 使用着色器,讓你做你的紋理圖像幾乎任何操作

  • 使用其他更完整的TexEnv模式來替換GL_MODULATE;我不確定哪個適合你,但是有足夠的創造力,也許one of those可能適合你。我想我記得TexEnv有很多擴展,這可能也是有用的。

0

Gamma校正可能在這裏發揮作用。用紅色點亮黑色仍然是黑色的,這是預期的。然而,如果「黑色」(非黑色)的東西仍然出現「大部分黑色」,那麼這表明出現了問題。

圖片,包括紋理,往往保存爲sRGB,因爲大多數人都有自己的顯示器設置了這種方式,無論如何,因此顯示在屏幕上時,這個看起來最適合大多數人。不幸的是,如果你用這些值進行數學運算,那就不再是真的了!

如果支持EXT_texture_sRGB(核心2.1版本),你應該嘗試加載紋理時,使用相應的「S」不變。否則,您也可以手動在着色器中進行數學運算。

=====>useful gamma literature