2012-02-11 2 views
2

OpenGL에서 2d 렌더링을 처리하는 데 사용할 수있는 라이브러리를 만들려고합니다. 현재 색상을 투명하게 설정하는 방법을 알아낼 수 없다는 것을 제외하고는 모두 알아 냈습니다 (예 : 255, 0 , 255 to transparent) 텍스쳐를 전처리하고 해당 색의 알파 값을 0으로 설정해야한다는 주제를 읽은 것으로 알지만이 작업을 수행하는 방법을 모릅니다.OpenGL 텍스처의 특정 색상을 투명하게 설정하려면 어떻게해야합니까?

추신 : 나는 그것이 도움이되는 경우 텍스처를로드하기 위해 SOIL을 사용하고 있습니다.

+0

쉐이더를 사용하고 있습니까? – cmannett85

답변

4

텍스쳐를 전처리하고 해당 색의 알파 값을 0으로 설정해야한다는 주제를 읽은 것으로 알고 있지만 어떻게해야할지 모르겠다.

for(y = 0; y < image.height; y++) for(x = 0; x < image.width; x++) { 
    if(image.data[x, y].rgb == colorkey) { 
     image.data[x, y].alpha = 0.0; 
    } else { 
     image.data[x, y].alpha = 1.0; 
    } 
} 

/* ... */ 

upload_image_to_texture(image); 
2

첫째 나는 아마 그 어떤 특별한 이유가없는 것입니다 (즉, 정말 낮은 메모리 또는이 마인 크래프트의 것을 사용하려고)하지 않는 한 알파 투명 텍스처보다는 컬러 키/크로 마키 것을 사용 추천 .

그렇다면 셰이더를 사용하십시오. 조각 쉐이더에서 단편 색상이 색상 키와 일치하면 'discard'키워드를 사용하십시오. official tutorial이 있습니다.

관련 문제