안녕하세요, 저는 프레임 버퍼에 일정한 색을 그리고 RGBA 텍스처의 알파 채널을 사용하여 혼합하려고합니다. glBlendFunc 및 glBlendColor보고 있었지만 텍스처에서 RGB 값을 무시하는 방법을 찾을 수 없습니다. 알파 값을 직접 가져 와서 GL_ALPHA를 사용하여 두 번째 텍스처를 만들어야한다고 생각합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?OpenGL에서 알파 채널 텍스처 만 사용 하시겠습니까?
감사합니다.
안녕하세요, 저는 프레임 버퍼에 일정한 색을 그리고 RGBA 텍스처의 알파 채널을 사용하여 혼합하려고합니다. glBlendFunc 및 glBlendColor보고 있었지만 텍스처에서 RGB 값을 무시하는 방법을 찾을 수 없습니다. 알파 값을 직접 가져 와서 GL_ALPHA를 사용하여 두 번째 텍스처를 만들어야한다고 생각합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?OpenGL에서 알파 채널 텍스처 만 사용 하시겠습니까?
감사합니다.
glBlendFunc를 사용하는 경우 GL_SRC_ALPHA
및 GL_DST_ALPHA
을 사용하여 텍스처에서 알파 채널을 선택할 수 있습니다 (혼합 작업 및 텍스처에 따라 다릅니다). 자세한 내용은 혼합 자습서를 참조하십시오
관련 OpenGL을 문서 :
나는 색상 코드 따기를 사용하고 있습니다. 이것은 질감 쿼드의 투명한 영역은 포착되지 않습니다 내가 지금 사용하고 코드입니다 : 기본적으로
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_TEXTURE_2D);
glEnable(GL_ALPHA_TEST);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glAlphaFunc(GL_GREATER, 0.5f);
glColor3ub(myColor[0], myColor[1], myColor[2]);
drawTexturedQuad();
나는 내가 RGB 그것이 텍스처를 적용하기 전에이었다대로되고 싶어 말하는거야 (이 것 myColor) 그리고 나는 ALPHA를 텍스처에서 가져 오길 원합니다.
이봐,이 작품! –
가장 좋은 대답은 간단합니다. 셰이더를 사용하십시오. GLSL 코드에서는 상상할 수있는 방식으로 텍스처 데이터를 사용할 수 있습니다. – Kos