2012-02-02 54 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