2012-02-02 5 views
0

Я бы хотел использовать текстуру, подобную кисти стиля Photoshop (пример: http://designblurb.com/wp-content/uploads/2008/11/grungy-watercolor-brushes.jpg), и разрешить пользователю выбирать цвет для нее, поэтому, когда она нарисована на экране черный цвет серого окрашивается по выбору пользователя.Раскрасьте текстуру серого в OpenGL ES на Android

Кто-нибудь знает лучший способ достичь этого? Существуют ли переменные текстурной среды, которые могут это сделать?

Любая информация с благодарностью.

ответ

3

Ну, это просто сводится к сочетанию цвета текстуры с некоторым постоянным цветом. Таким образом, у вас есть текстура с оттенками серого (будь то текстура 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 и сочетаете текстуру с постоянным цветом - это ваша наименьшая проблема.

+0

Ага, я вижу, что это вступает в силу сейчас, однако кажется, что, поскольку текстура в основном черная, цвет не оказывает большого эффекта. Интересно, есть ли другая переменная среды или функция смешивания, которая может создать более сильный цвет, или я должен осветлить маску оттенков серого? –

+0

@TomPennetta Ну, конечно, цвет, где кисть белая. Если ваша кисть представляет черный цвет (который вы как-то предлагаете), вам нужно переключать цвета. И вы должны также осветлить его, если хотите, чтобы он был ярче. Точный цвет определяется только белыми частями, все остальное может быть только темнее. Вы можете поэкспериментировать с альфа-смешиванием, чтобы получить аддитивные эффекты (детали ярче при рисовании кистью более одного раза), но я не знаю, хотите ли вы этого. –

+0

Понял, я привык к Photoshop, где темнее кисть является более сильным цветом. Спасибо за информацию! –

 Смежные вопросы

  • Нет связанных вопросов^_^