0

我想使用类似于 Photoshop 风格画笔的纹理(例如:http ://designblurb.com/wp-content/uploads/2008/11/grungy-watercolor-brushes.jpg ),并允许用户选择颜色,所以当它被绘制到屏幕上时,灰色的黑色会被用户的选择着色。

有谁知道实现这一目标的最佳方法?是否有纹理环境变量可以做到这一点?

非常感谢任何信息。

4

1 回答 1

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 的基础知识,并且将纹理与恒定颜色结合起来是你的最小问题。

于 2012-02-02T18:10:08.583 回答