我想知道如何在OpenGL中的对象上打印部分颜色。我的意思是,我希望能够编辑该颜色的不透明度,我不知道该怎么做。我唯一知道的是如何设置整个纹理的不透明度:
gl.glColor4f(red, green, blue, **opacity**);
但是使用这个功能,我将纹理变得透明,我只想编辑我给它的颜色级别。
任何提示?我在Android上使用OpenGL-ES。
答案 0 :(得分: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;
}
}
}
}