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