Один из способов, я могу подумать об этом, но для передачи текстуры в процессор требуется предварительная рендеринга до того, как передать текстуру в OpenGL будет иметь 32-битные текстуры, а затем в рутине, которую вы создаете, когда вы вводите параметр цвета, который вы хотите установить в Opacity, вы просто запускаете цикл, который проверяет этот конкретный цвет, и устанавливает его альфа-компонент во все, что вы хотите.
// 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;
}
}
}
}
Ваш вопрос не очень ясен, вы пробовали использовать glColor3f? –
В то время как классная идея, я на самом деле не нахожу (я spitballing здесь) думаю, что OpenGL ES и полная реализация opengl обеспечивают этот тип оператора/операции. – trumpetlicks
Вам нужно будет сделать это в шейдере фрагмента: проверьте, равен ли цвет нужного цвета, а затем отрегулируйте альфа. – Kimi