0

我想知道如何在 OpenGL 中的对象上打印部分颜色。我的意思是,我希望能够编辑该颜色的不透明度级别,但我不知道该怎么做。我唯一知道的是如何设置整个纹理的不透明度:

gl.glColor4f(red, green, blue, **opacity**);

但是有了这个功能,我将纹理变成透明的,我只想编辑我给它的颜色级别。

有小费吗?我在 Android 上使用 OpenGL-ES。

4

1 回答 1

0

我可以考虑这样做的一种方法,但是在将纹理传递给 OpenGL 之前需要在 CPU 中进行一些预渲染,那就是拥有 32 位纹理,然后在您构建的例程中,当您引入颜色参数时如果您想设置它的不透明度,您只需运行一个循环来检查该特定颜色,并将其 alpha 分量设置为您想要的任何值。

// Algorithm Only
void setOpacityOfColor(char r, char g, char b, char opacToSet, RGBAType image[][]){

    for(int x = 0; x < image.width; x++){
        for(int y = 0; y < image.height; y++){
            if(image[x][y].r == r && image[x][y].g == g && image[x][y].b == b{
                image.alpha = opacToSet;
            }
        }
    }

}

如果我真正理解您的问题,我认为这是正确的。

这样做的好处是,如果您以后想将其设置回不透明,它会保留原始颜色。如果你真的想完全改变颜色,你也可以这样做,它看起来更像如下:

// Algorithm Only
void setOpacityOfColor(char r, char g, char b, char newR, char newG, char newB, RGBAType image[][]){

    for(int x = 0; x < image.width; x++){
        for(int y = 0; y < image.height; y++){
            if(image[x][y].r == r && image[x][y].g == g && image[x][y].b == b{
                image.r = newR;
                image.g = newG;
                image.b = newB;
            }
        }
    }

}
于 2013-02-13T15:46:09.947 回答