我有一個粒子系統在背景紋理上渲染。每個粒子都是正方形,沒有紋理應用於它,它們都是相同的顏色。背景是灰度紋理。 我想要實現的是在應用程序(如Gimp)中已知的混合類型,即顏色混合模式。Opengl ES混色模式
基本上,由粒子覆蓋的背景區域應保持其亮度,但採用粒子的顏色。 我試過幾個glBlendFunc()參數的組合,並嘗試用glTexEnv搞亂,但我在理解它時遇到了很多麻煩。 目前,如果兩個粒子重疊,它們或者變亮或變暗(取決於glBlendFunc參數)。
我在android上使用OpenGL ES 1.1。沒有任何方法可以在不使用OpenGL ES 2.0的情況下實現這種效果?如果是這樣,那是什麼?
在第二步,如果我在HSL中最大化亮度,不要得到純白色?轉換回RGB我得到(255,255,255)。所以我嘗試使用HSV色彩空間並使值最大化,但粒子重疊時背景變暗。 – Davide
你是對的,在HSL中應該是0.5的明亮度,而不是1.0(這是純白色的)。值爲1.0的HSV應該給出相同的結果。這個想法是,用純色進行乘法應該不會導致亮度的變化。這隻適用於純色(你可以很容易地驗證,例如RGB =(255,0,0)。) –
我得到所需的效果,但只有顏色(255,0,0),(0,255,0)和(0,0,255)。如果我在HSL中使用(204,0,255)(288º,100%,50%)之類的東西,重疊會變得更暗。 – Davide