Ну, это просто сводится к сочетанию цвета текстуры с некоторым постоянным цветом. Таким образом, у вас есть текстура с оттенками серого (будь то текстура GL_RGB
со всеми компонентами цвета, имеющими одинаковое значение, или только текстура GL_LUMINANCE
). Фактическое сочетание обоих цветов зависит от вашей версии OpenGL ES.
В ES-вы просто использовать среду 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 и сочетаете текстуру с постоянным цветом - это ваша наименьшая проблема.
Ага, я вижу, что это вступает в силу сейчас, однако кажется, что, поскольку текстура в основном черная, цвет не оказывает большого эффекта. Интересно, есть ли другая переменная среды или функция смешивания, которая может создать более сильный цвет, или я должен осветлить маску оттенков серого? –
@TomPennetta Ну, конечно, цвет, где кисть белая. Если ваша кисть представляет черный цвет (который вы как-то предлагаете), вам нужно переключать цвета. И вы должны также осветлить его, если хотите, чтобы он был ярче. Точный цвет определяется только белыми частями, все остальное может быть только темнее. Вы можете поэкспериментировать с альфа-смешиванием, чтобы получить аддитивные эффекты (детали ярче при рисовании кистью более одного раза), но я не знаю, хотите ли вы этого. –
Понял, я привык к Photoshop, где темнее кисть является более сильным цветом. Спасибо за информацию! –