2012-02-11 101 views
2

我想創建一個庫,我可以用它來處理opengl(C++)中的2D渲染我已經想通了,除了我無法弄清楚如何設置當前顏色透明(例如能夠設置255,0 ,255到透明)我從閱讀主題知道我需要預處理紋理並將該顏色的alpha值設置爲0,但我不知道如何去做。 PS:我使用SOIL來加載紋理,如果有幫助。如何將Opengl紋理中的某些顏色設置爲透明?

+0

你在使用着色器嗎? – cmannett85 2012-02-11 21:19:13

回答

4

我從閱讀主題知道我需要預處理紋理並將顏色的alpha值設置爲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

首先,我可能會建議你使用Alpha透明的質感,而不是色鍵/色度鍵的人,除非他們是一些具體的理由不(即非常低的內存或者你試圖使用的Minecraft的) 。

就是說,使用着色器。在片段着色器中,當片段顏色與您的顏色鍵匹配時,請使用「放棄」關鍵字。有一個official tutorial