我想使用类似于Photoshop风格画笔的纹理(例如:http://designblurb.com/wp-content/uploads/2008/11/grungy-watercolor-brushes.jpg),并允许用户为其选择颜色,因此当它被绘制到屏幕时,灰色的黑色变为彩色由用户选择。
有谁知道实现这一目标的最佳方法?是否有可以做到这一点的纹理环境变量?
非常感谢任何信息。
答案 0 :(得分:3)
嗯,它归结为将纹理的颜色与一些恒定的颜色相结合。所以你有灰度纹理(无论是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的基础知识,并且将纹理与恒定颜色组合是最不容易的问题。