0

OpenGLでオブジェクトに部分的な色を印刷する方法を知りたいのですが。つまり、その色の不透明度のレベルを編集できるようにしたいのですが、その方法がわかりません。私が知っている唯一のことは、テクスチャ全体の不透明度を設定する方法です。

gl.glColor4f(red, green, blue, **opacity**);

しかし、その機能を使用して、テクスチャを透明にし、与えているカラーレベルを編集したいと思います。

任意のヒント?AndroidでOpenGL-ESを使用しています。

4

1 に答える 1

0

これを行うと考えることができる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;
            }
        }
    }

}
于 2013-02-13T15:46:09.947 に答える