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