블렌드가 목적을 달성 할 때까지 주 이미지를 완전히 불투명하게 유지하면서 24 비트 비트 맵의 배경을 제거하는 방법을 찾고 있지만 지금은 주 비트는 불투명하다. Google에서 검색했지만 아무 도움이되지 않는다고 생각합니다. 잘못된 검색어를 검색하고 있으므로 도움이 될 것입니다.OpenGL의 텍스처에서 검정색 배경을 제거하는 방법
편집 : 예 죄송합니다, 지금 배경으로 검은 색을 사용 중입니다.
블렌드가 목적을 달성 할 때까지 주 이미지를 완전히 불투명하게 유지하면서 24 비트 비트 맵의 배경을 제거하는 방법을 찾고 있지만 지금은 주 비트는 불투명하다. Google에서 검색했지만 아무 도움이되지 않는다고 생각합니다. 잘못된 검색어를 검색하고 있으므로 도움이 될 것입니다.OpenGL의 텍스처에서 검정색 배경을 제거하는 방법
편집 : 예 죄송합니다, 지금 배경으로 검은 색을 사용 중입니다.
는 OpenGL을위한 질감을 만드는, 32 비트 RGBA 질감과 텍스처를 만들 수 있습니다 : 당신이 다음이 작업을 수행 한 경우 당신은 조화가 활성화해야합니다. 이 새로운 32 비트 텍스처의 내용을 담을 버퍼를 만들고 24 비트 비트 맵을 반복합니다. 배경색을 찾을 때마다 새로운 32 비트 비트 맵에서 알파를 0으로 설정하십시오.
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;
}
환상적이고 정확하게 내가 찾고있는 것이 었습니다. 나는 알파 채널이 OGL에서 어떻게 읽혀 지는지 확신 할 수 없었다. 인터넷 검색을하고 코드를 읽은 후에 나는 분류되어 있고 갈 준비가되었다고 생각한다. 고맙습니다 :) – Auraomega
그림 영역을 제한하는 이런 종류의 작업에만 사용되는 스텐실 버퍼를 찾는 것처럼 들리 네요.
버퍼는 각 픽셀과 연관된 값을 저장합니다.이 값은 1 개의 후속 드로잉이 렌더링되고 0이면 마스크됩니다. 보통 스텐실 버퍼는 멀티 패스 렌더링 기술과 함께 사용되어 반사 및 헤드 업 디스플레이와 같은 것을 만듭니다.
약간 혼란 스럽습니다. 24 비트 이미지에는 투명도가 없으며 단순히 RGB 값의 배열입니다. "메인 비트를 불투명하게 유지"한다는 것은 무엇을 의미합니까? 모든 검은 색 픽셀과 같은 특정 색의 모든 픽셀을 투명하게 만들고 싶습니까? 이것이 원하는 경우 Google opengl transparency mask (예 : NeHe #20 참조)을 사용할 수 있습니다.
정말 필요한 것은 이미지의 알파 채널입니다. 24 비트이기 때문에 하나도 만들지는 않겠지 만 모든 검은 색 (0x000000) 픽셀에 알파를 0으로 설정하여 이미지를로드하면 즉석에서 하나를 만들 수 있습니다
그가 불타는 데 충분한 메모리가 있다면 이것은 아마도 가장 쉬운 해결책 일 것입니다. 그렇지 않다면 색인 된 투명성에 전체 8 비트 알파 채널을 사용하는 것은 낭비 일 것입니다. – zoul
텍스처를로드해야합니다 glTexImage2D 호출에서 GL_RGBA 형식으로.
/* Set up blend */
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
나는 완전히 질문을 오해하지만 한 ~ ~ 내 대답을 삭제 실 거예요 그래서 블렌드를 활성화해야합니다. –
나는 검은 색과 같은 지정된 색에 대해 이야기하고 있습니다. R0G0B0? –