如何将Opengl纹理中的某些颜色设置为透明?

时间:2012-02-11 21:16:14

标签: opengl transparency textures

我正在尝试创建一个可以用来处理Opengl中的2d渲染的库(c ++)我已经弄明白了除了我无法弄清楚如何将当前颜色设置为透明(例如,能够设置255, 0,255到透明)我通过阅读主题来实现我需要预处理纹理并将该颜色的alpha值设置为0但我不知道如何做到这一点。

PS:如果有帮助,我正在使用SOIL加载纹理。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

首先,我建议您使用alpha透明纹理而不是颜色键/色度键,除非它们是某些特定原因(即内存非常低或尝试使用Minecraft)。

据说,使用着色器。在片段着色器中,当片段颜色与您的颜色键匹配时,请使用'discard'关键字。有official tutorial