これを行うと考えることができる1つの方法ですが、テクスチャをOpenGLに渡す前にCPUで事前にレンダリングする必要があります.32ビットのテクスチャを作成し、作成したルーチンで色のパラメータを取り込むことです。不透明度を設定したい場合は、その特定の色をチェックするループを実行し、そのアルファ コンポーネントを希望する値に設定します。
// 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;
}
}
}
}