2012-02-11 28 views
2

OpenGLで2dレンダリングを処理するために使用できるライブラリを作成しようとしています。(C++)現在の色を透明に設定する方法(例:255、0 、255 to transparent)私はテクスチャを前処理し、その色のアルファ値を0に設定する必要があるという話題を読んでいることを理解していますが、これをどうするか分かりません。OpenGLテクスチャの特定の色を透明に設定するにはどうすればよいですか?

PS:テクスチャの読み込みにSOILを使用しています。

+0

シェーダーを使用していますか? – cmannett85

答えて

4

テクスチャを前処理して、その色のアルファ値を0に設定する必要があることを、トピックで読んで理解していますが、これを行う方法はわかりません。

for(y = 0; y < image.height; y++) for(x = 0; x < image.width; x++) { 
    if(image.data[x, y].rgb == colorkey) { 
     image.data[x, y].alpha = 0.0; 
    } else { 
     image.data[x, y].alpha = 1.0; 
    } 
} 

/* ... */ 

upload_image_to_texture(image); 
2

まず私はおそらくない(マインクラフトのものを使用しようとしてすなわち、実際にメモリ不足またはあなた)にはいくつかの特定の理由が自分でない限り、あなたはアルファ透明テクスチャではなく、カラーキー/クロマキーのものを使用することをお勧めします。

これで、シェーダーを使用してください。あなたのフラグメントシェイダーでは、フラグメントカラーがあなたのカラーキーと一致するときに 'discard'キーワードを使います。 official tutorialがあります。

関連する問題