0
我考慮了一展身手了一段時間,但我一直沒能得到良好的結果。基本上,我有一個2個紋理的球體。一個是與其他人混合在一起的,並且想法是讓它成爲一個臉部環境映射。我想讓一個紋理與球體一起旋轉,另一個紋理保持固定在最初的紋理座標上。另外旋轉2紋理座標集相同的對象
我試圖旋轉一個紋理矩陣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;
如果有人需要看到更多的是怎麼回事,只是讓我知道的。
我雖然這件事,但我擔心它會影響到整體性能。還有一堆其他的碰撞檢測和物理數學,已經增加了很多開銷。任何想法,我會採取多少表現打擊,而不是一種不同的方式? – ezekielDFM 2010-12-20 17:04:35