2010-11-24 8 views
0

のためのセットを座標回転が、私は、良好な結果を得ることができていません。基本的に、私は2つのテクスチャを持つ球を持っています。 1つは他のものと上にブレンドされ、アイデアはそれをフェース環境マッピングにすることです。あるテクスチャを球で回転させ、もう一方のテクスチャを初期テクスチャ座標に固定しておきたい。は別に2テクスチャは、私はしばらくの間、この碁を与えてくれた同じオブジェクト

私は1つのテクスチャのGL_TEXTURE行列を回転させ、他のリセットを試してみましたが、それは特定の方法を回転させていますとき、テクスチャマッピングが適切ではないので、これは本当にトリックを行いません。

誰も私にはテクスチャ座標の一組だけを回転させると固定その他を保つことができる方法を知っていますか?誰もがちょうど私が知っている何が起こっているかの詳細を参照する必要がある場合

glColor4f(0.0, 0.0, 0.0, 0.0); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glLoadIdentity(); 

glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_NORMAL_ARRAY); 

glClientActiveTexture(GL_TEXTURE0); 
glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, tex[0]); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glTexCoordPointer(2, GL_FLOAT, sizeof(TexturedVertexData3D), &SphereVertexData[0].texCoord); 

glMatrixMode(GL_TEXTURE); 
glPushMatrix(); 
glTranslatef(0, 0, -4.5f); 
glRotatef(.00001, .00001, .0, .0); 

glClientActiveTexture(GL_TEXTURE1); 
glActiveTexture(GL_TEXTURE1); 
glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, tex[1]); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glTexCoordPointer(2, GL_FLOAT, sizeof(TexturedVertexData3D), &SphereVertexData[0].texCoord); 

glPopMatrix(); 

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); 

glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glTranslatef(0, 0, -4.5f); 

glVertexPointer(3, GL_FLOAT, sizeof(TexturedVertexData3D), &SphereVertexData[0].vertex); 
glNormalPointer(GL_FLOAT, sizeof(TexturedVertexData3D), &SphereVertexData[0].normal); 
glDrawArrays(GL_TRIANGLES, 0, kSphereNumberOfVertices); 

glPopMatrix(); 

glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
glDisableClientState(GL_NORMAL_ARRAY); 

rotation += .0001; 

:ここ

は私の現時点でのコードをレンダリングします。

答えて

1

あなたが回転したいテクスチャを持つ球に2つの球だけの問題glRotatef()を使用することができます。他の球は、対応するglTranslatef()コマンドを受け取るだけです。アルファチャンネルを使用してテクスチャをブレンドする場合も同様です。そのことについて

+0

私はしかし、私はそれが全体のパフォーマンスに影響を与えるだろう心配です。衝突検出と物理学の数学には他にもたくさんのオーバーヘッドが追加されています。どのように多くのパフォーマンスヒットのアイデア私は別の方法とは対照的に取るだろうか? – ezekielDFM

+0

私は前にこれをやったが、私は唯一のモデルは、物理学に含まれており、それは物理学に含まれていなかったので、クローンはちょうど回転の変化をリニアに続き、ありませんでした。これは、おそらくモデルを別の方法で追跡するテクスチャを持っている可能性があるモデル描画のための追加ステップでした。 –

+0

これはうまくいきますが、私が望んでいたように見えます。テクスチャを組み合わせることで、環境をADDに設定することができ、少し良くブレンドされます。私は別の方法を思いついたら、実験を続けるつもりです。 – ezekielDFM

関連する問題