你可以解釋從灰度漸變爲1-d紋理座標的顏色,然後指定你的查表爲1-d質感。這似乎符合你的情況。
或者,您可以使用片段程序(着色器)對各個像素執行任意顏色轉換。
更多解釋:什麼是紋理?從概念上講,紋理是某種查找功能,頂部有一些額外的邏輯。
二維紋理是在[0,0] - [1,1]範圍內任意一對座標(s,t)或(x,y)產生特定顏色(RGB, RGBA,L等等)。另外它還有一些設置,比如變形或過濾。
下面,紋理由給定「密度」的離散數據描述 - 也許是16x16,也許是256x512。濾波過程可以爲[0,0]和[1,1]之間的任何實數指定顏色(通過混合/插值相鄰紋素或僅取最接近的紋理)。
一維紋理是相同的,除了它只將一個真實值映射到一個顏色。因此,它可以被認爲是「查找表」的特定類型。您可以將其視爲基於1xN圖像的二維紋理。
如果你有一個灰度漸變,你可以直接通過將漸變值作爲一種顏色來渲染它 - 或者你可以把它作爲紋理座標(=查找表中的索引),並使用一維紋理任意顏色空間變換。
您只需要將梯度值(從0到255範圍)轉換爲紋理索引的[0..1]範圍。我會推薦類似out = (in+0.5)/256.0
。由於我們想要指向紋理的中間(紋理內的值),而不是指向2個值之間的拐角,0.5表示半紋理偏移量。
若要只有精確來自查找表(= 1-D紋理)的RGB值,還將紋理過濾器設置爲GL_NEAREST
。
順便說一句:請注意,如果您已經需要其他紋理繪製漸變,那麼它會變得更復雜一點,因爲您希望將從一個紋理接收的值視爲另一個紋理的座標 - 並且我相信您爲此需要像素着色器。不是着色器是複雜的或任何東西......當你學習基礎知識時,它們非常方便。
來源
2011-04-22 19:07:04
Kos
順便說一句,請不要忘記在發佈OpenGL相關問題時指定OpenGL版本。 – Kos 2011-04-22 19:07:32
@Kos,使用JOGL 2.0 – 2011-04-22 19:09:44