Java OpenGL中的颜色不透明度
我想知道如何在OpenGL中打印对象的局部颜色。我的意思是,我希望能够编辑该颜色的不透明度级别,但我不知道怎么做。我只知道如何设置整个纹理的不透明度:Java OpenGL中的颜色不透明度,java,opengl-es,colors,Java,Opengl Es,Colors,我想知道如何在OpenGL中打印对象的局部颜色。我的意思是,我希望能够编辑该颜色的不透明度级别,但我不知道怎么做。我只知道如何设置整个纹理的不透明度: gl.glColor4f(red, green, blue, **opacity**); 但是有了这个功能,我将纹理变成透明的,我只想编辑我给它的颜色级别 有什么建议吗?我在Android上使用OpenGL ES。我可以考虑这样做,但在将纹理传递给OpenGL之前,需要在CPU中进行一些预渲染,即使用32位纹理,然后在构建的例程中,当您输入要设
gl.glColor4f(red, green, blue, **opacity**);
但是有了这个功能,我将纹理变成透明的,我只想编辑我给它的颜色级别
有什么建议吗?我在Android上使用OpenGL ES。我可以考虑这样做,但在将纹理传递给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;
}
}
}
}
//仅限算法
void setOpacityOfColor(字符r、字符g、字符b、字符opacToSet、RGBAType图像[][])){
对于(int x=0;x
如果我真正理解你的问题,我认为这是正确的
还有一个好处是,如果您以后想将其设置回不透明,它会保留原始颜色。如果您真的想完全更改颜色,您也可以这样做,它看起来更像以下内容:
// 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;
}
}
}
}
//仅限算法
void setOpacityOfColor(char r、char g、char b、char newR、char newG、char newB、RGBAType image[]{
对于(int x=0;x
您的问题不是很清楚,您是否尝试过使用glColor3f?虽然这是一个很酷的想法,但实际上我并不介意(我在这里吐痰)假设OpenGL ES或完整的OpenGL实现都没有提供这种类型的操作符/操作。您必须在片段着色器中执行此操作:检查颜色是否等于所需的颜色,然后调整alpha。