2012-02-02 3 views
0

Photoshop 스타일 브러시 (예 : http://designblurb.com/wp-content/uploads/2008/11/grungy-watercolor-brushes.jpg)와 비슷한 질감을 사용하고 사용자가 색상을 선택할 수 있으므로 화면에 그려지는 경우 회색의 검정색은 사용자의 선택에 따라 색상이 지정됩니다.Android에서 OpenGL ES의 그레이 스케일 텍스처를 채색하십시오.

누구나 가장 좋은 방법을 알고 있습니까? 이 작업을 수행 할 수있는 텍스처 환경 변수가 있습니까?

모든 정보를 매우 높이 평가합니다.

답변

3

음, 텍스처의 색상을 일정한 색상으로 결합하는 것입니다. 따라서 그레이 스케일 텍스처가 있습니다 (동일한 값을 갖는 색상의 모든 구성 요소가있는 GL_RGB 텍스처이거나 단지 GL_LUMINANCE 텍스처). 두 색상의 실제 조합은 OpenGL ES 버전에 따라 다릅니다.

ES 1에서 당신은 개체의/정점 '컬러 텍스처 색상 (중 조명이 비활성화 된 경우, 귀하의 경우 보인다 조명에 의해 계산 또는 glColor 또는 glColorPointer 설정)을 증식하기 위해 GL_MODULATE 텍스처 환경을 사용 :

이 물론 ES 2에서
glColor(...); 
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 
//draw a textured object 

는 프레 그먼트 쉐이더에서 스스로해야 할 일 : 모든 일이 당신에게 아무 말도하지 않은 경우 (버전에 따라)

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에서는 브러시가 어두울수록 색상이 더 강해지는 것으로 익숙합니다. 정보 주셔서 감사합니다! –