하는 방법을 제거하는 배경에서 텍스처 OpenGL
문제
나는 방법을 찾고의 배경을 제거하는 24 비트 비트맵을 유지하면서,주요 이미지 완전히 불투명하고,지금까지 혼합하는 제공을 목적으로 언제나 유지하는 주요 조금 불투명합니다.나는 검색이 구글에서는 아무것도 발견하지 못했는 데 도움이 생각 나는 아마 검색에 대한 잘못된 조건이지만,그렇게 어떤 도움을 주시면 감사하겠습니다.
편집:예약 나도를 사용하여 블랙으로 지금의 배경입니다.
해결책
을 만드는 경우에는 질감에 대한 OpenGL,를 만들려고 합니다 질감으로 32-bit RGBA 질감입니다.Create 버퍼의 내용을 붙들기 위하여 이 새로운 32 비트감과 반복을 통해 귀하의 24 비트 비트맵.때마다 당신이 당신의 배경 색상 설정파로에서의 새로운 32 비트 비트맵.
struct Color32;
struct Color24;
void Load24BitTexture(Color24* ipTex24, int width, int height)
{
Color32* lpTex32 = new Color32[width*height];
for(x = 0; x < width; x++)
{
for(y = 0; y < height; y++)
{
int index = y*width+x;
lpTex32[index].r = ipTex24[index].r;
lpTex32[index].g = ipTex24[index].g;
lpTex32[index].b = ipTex24[index].b;
if( ipTex24[index] == BackgroundColor)
lpTex32[index].a = 0;
else
lpTex32[index].a = 255;
}
}
glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, lpTex32);
delete [] lpTex32;
}
다른 팁
당신이 필요합니다드 질감으로 GL_RGBA 형식으로 호출에 glTexImage2D.당신이 할 경우 다음을 사용 혼:
/* Set up blend */
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
이 소리를 혼란스럽습니다.24 비트 이미지가 없는 투명도,그것은 단순히 배열의 RGB 값입니다.당신은 무엇을 의미하"유지하는 주요 조금 불투명한"?당신이 원하는 모든 픽셀을 특정한 색상 예를 들어 모든 검은 픽셀을 투명하지?이것이 무엇을 원할 수 있습 google opengl 투명성 마스크 (참조 치치하얼 시#20 예를 들어).
당신이 정말로 필요한 알파 채널에서 당신의 이미지입니다.이후 그 24 비트,당신은 하나도 없지만,만들 수 있습 중 하나에 당신의 이미지를 로드하여 설정하는 알파로 모든 블랙(0x000000)픽셀
처럼 들리는 당신이 찾고있는 스텐실 버퍼에 사용되는 단지 이런 작업의 제한 그리기 영역입니다.
버퍼에 저장 값에 관련된 각 픽셀의 1 이후에 도면 렌더링됩니다 어디 그것의 0 것 마스크.일반적으로 버퍼를 스텐실용으로 멀티 렌더링 기법을 만들기 같은 것들을 반사하고 머리를 표시합니다.