【问题标题】:How do I set certain colors in an Opengl texture to transparent?如何将 Opengl 纹理中的某些颜色设置为透明?
【发布时间】:2012-02-11 21:16:14
【问题描述】:

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

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

【问题讨论】:

    标签: opengl transparency textures


    【解决方案1】:

    通过阅读该主题,我意识到我需要预处理纹理并将该颜色的 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        • 2013-06-27
        • 1970-01-01
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        相关资源
        最近更新 更多