我想使用類似於Photoshop風格畫筆的紋理(例如:http://designblurb.com/wp-content/uploads/2008/11/grungy-watercolor-brushes.jpg),並允許用戶爲其選擇顏色,因此當它被繪製到屏幕上時灰色的黑色通過用戶的選擇變成彩色。在Android上在OpenGL ES中着色灰度紋理
有沒有人知道實現這一目標的最佳方法?有紋理環境變量可以做到這一點嗎?
任何信息,非常感謝。
我想使用類似於Photoshop風格畫筆的紋理(例如:http://designblurb.com/wp-content/uploads/2008/11/grungy-watercolor-brushes.jpg),並允許用戶爲其選擇顏色,因此當它被繪製到屏幕上時灰色的黑色通過用戶的選擇變成彩色。在Android上在OpenGL ES中着色灰度紋理
有沒有人知道實現這一目標的最佳方法?有紋理環境變量可以做到這一點嗎?
任何信息,非常感謝。
好吧,它只是結合紋理的顏色和一些常量的顏色。所以你有灰度紋理(無論是GL_RGB
紋理與顏色的所有組件具有相同的值,或只是一個GL_LUMINANCE
紋理)。兩種顏色的實際組合取決於您的OpenGL ES版本。
在ES 1,你只需要使用GL_MODULATE
紋理環境繁殖與對象/頂點」顏色紋理顏色(通過照明計算或glColor
或glColorPointer
設置,如果照明是禁用的,這似乎是您的情況):
glColor(...);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//draw a textured object
在ES 2,你當然得自己動手在片段着色器:
uniform sampler2D tex;
uniform vec4 color;
varying vec2 texCoord;
void main()
{
gl_FragColor = color * texture2D(tex, texCoord).r;
}
如果所有這些事情不告訴你任何東西(取決於您的版本),那麼你或許應該刪除對OpenGL ES的基礎知識稍微有所瞭解,並將紋理與常量顏色相結合是最不容易的問題。
啊哈,我現在看到它生效了,但是看起來由於紋理主要是黑色,所以顏色沒有太大影響。我想知道是否有不同的環境變量或混合函數可以創建更強的顏色,或者我應該減輕畫筆灰度蒙版嗎? – 2012-02-02 18:16:53
@TomPennetta嗯,當然,顏色是刷白色的地方。如果您的畫筆以顏色表示黑色(您以某種方式建議您的圖像),則需要切換顏色。如果你想讓它更明亮,你還應該減輕它。確切的顏色只能由完全白色的部分給出,其他的只能是較暗的。您可以嘗試使用alpha混合來獲得附加效果(刷子多次塗刷時部件更亮),但我不知道這是否是您想要的。 – 2012-02-02 18:19:43
我明白了,我習慣了Photoshop,顏色越深,顏色越深。謝謝(你的)信息! – 2012-02-02 18:21:14