2011-08-09 4 views
1

同じテクスチャのマルチテクスチャで2つのマージした後に、新しいテクスチャを作成する方法を理解しようとしています。私はETC1の圧縮テクスチャを使用しているので、魔女はアルファチャンネルをサポートしていないので、これをやっているので、別のファイルからあらかじめ生成されたアルファチャンネルをロードし、両方を圧縮解除してからマージする必要がありました。マルチテクスチャから新しいテクスチャを作成する

マルチテクスチャリングはこれを行いますが、2つのテクスチャ(圧縮+アルファ)を​​完全にレンダリングすることを意味します。

また、圧縮テクスチャを使用して、レンダリングパイプラインで大幅な高速化が見られるため、これをやっています。アルファチャンネルでそれを作り直すと、パフォーマンス上のメリットが残っていると思われます。

+0

2つのテクスチャを完全にレンダリングすることなく(したがってマルチテクスチャを使用して)、テクスチャは特定のフラグメントのために読み込まれるたびに解凍されるだけなので、それらを組み合わせることはありません。だから、テクスチャ全体を解凍して一つにまとめることはできません。あなたはこれを行うことができますが、標準的な圧縮されていないテクスチャで終わるだけで、何も買わないでしょう。フラグメントシェーダ(przemo_liの答え)または固定機能のマルチテクスチャ(私の答え)が唯一の方法です。 –

答えて

1

私はあなたがOpenGL ES 1.1マルチテクスチャとGL_COMBINE環境を使用してそれを行うことができると思います。まず、カラーテクスチャのためにあなたが望む標準どんな環境を使用します。

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, rgbTexture); 
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); //or maybe GL_REPLACE 

は、第2ユニットにバインドされているアルファテクスチャ、のために、私たちは前のステージからの色(カラーテクスチャを)取るだけテクスチャのアルファを使用してください。

glActiveTexture(GL_TEXTURE1); 
glBindTexture(GL_TEXTURE_2D, alphaTexture); 
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 
glTenEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); 
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS); 
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); //default 
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); //or maybe GL_REPLACE 
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);  //default 
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); //default 
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA, GL_PREVIOUS); //default 
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA); //default 

私はあなたを誤解して、マルチテクスチャ(とどちらもフラグメントシェーダ)を使用したくない場合は、レンダリング中に、これらの2つのテクスチャを組み合わせることができなくなります。おそらくマルチパス技術を使っているかもしれませんが、パフォーマンス面で何かを買うかどうかは分かりません。

0

フラグメントシェーダが必要です。

これらの2つのテクスチャから色とアルファ値を混在させます。それで全部です。 (Colorはususallyになり、アルファ値は直接出力になります)。

+0

フラグメントシェーダは、OpenGLES 2.0の形式でしかありませんか?私は1.0でこれを行うことができませんか? – scooterman

+2

あなたの質問にOpenGL ESバージョンに関する情報を追加!その重要です。そして私はES1.0/1.1についてあまり知らない –

関連する問題