2012-02-02 80 views

回答

3

好吧,它只是結合紋理的顏色和一些常量的顏色。所以你有灰度紋理(無論是GL_RGB紋理與顏色的所有組件具有相同的值,或只是一個GL_LUMINANCE紋理)。兩種顏色的實際組合取決於您的OpenGL ES版本。

在ES 1,你只需要使用GL_MODULATE紋理環境繁殖與對象/頂點」顏色紋理顏色(通過照明計算或glColorglColorPointer設置,如果照明是禁用的,這似乎是您的情況):

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的基礎知識稍微有所瞭解,並將紋理與常量顏色相結合是最不容易的問題。

+0

啊哈,我現在看到它生效了,但是看起來由於紋理主要是黑色,所以顏色沒有太大影響。我想知道是否有不同的環境變量或混合函數可以創建更強的顏色,或者我應該減輕畫筆灰度蒙版嗎? – 2012-02-02 18:16:53

+0

@TomPennetta嗯,當然,顏色是刷白色的地方。如果您的畫筆以顏色表示黑色(您以某種方式建議您的圖像),則需要切換顏色。如果你想讓它更明亮,你還應該減輕它。確切的顏色只能由完全白色的部分給出,其他的只能是較暗的。您可以嘗試使用alpha混合來獲得附加效果(刷子多次塗刷時部件更亮),但我不知道這是否是您想要的。 – 2012-02-02 18:19:43

+0

我明白了,我習慣了Photoshop,顏色越深,顏色越深。謝謝(你的)信息! – 2012-02-02 18:21:14