我認爲可以這樣做的一種方式,但是在將紋理傳遞給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;
}
}
}
}
你的問題不是很清楚,你有沒有嘗試過使用glColor3f? – 2013-02-13 15:35:24
雖然一個很酷的想法,但我實際上並沒有(我在這裏喋喋不休)認爲OpenGL ES和一個完整的opengl實現提供了這種類型的操作符/操作。 – trumpetlicks 2013-02-13 15:36:34
您必須在片段着色器中執行此操作:檢查顏色是否與所需顏色相同,然後調整Alpha。 – Kimi 2013-02-13 15:44:01