Advertisement
Guest User

Project2

a guest
Dec 21st, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. glBegin(GL_TRIANGLES);
  2.     for (size_t j=0;j<3;++j)   
  3.     {
  4.         //------ 提早在 j==0 時就丟這個face的三個頂點去計算
  5.         if(j==0)
  6.         {
  7.             for(int k=0 ; k<3 ; k++)
  8.             {
  9.                 double x = object->vList[object->faceList[i][k].v].ptr[0];
  10.                 double y = object->vList[object->faceList[i][k].v].ptr[1];
  11.                 double z = object->vList[object->faceList[i][k].v].ptr[2];
  12.                 double tx = object->tList[object->faceList[i][k].t].ptr[0];
  13.                 double ty = object->tList[object->faceList[i][k].t].ptr[1];
  14.  
  15.                 Vector3D P(x, y, z);
  16.                 Vector3D C(tx, ty, 0);
  17.                    
  18.                 trianglePosition.push_back(P);
  19.                 textureCoord.push_back(C);
  20.             }
  21.             Vector3D tangent_now(0,0,0);
  22.             Vector3D bitangent_now(0,0,0);
  23.             ComputeTangent(   trianglePosition[0], trianglePosition[1], trianglePosition[2],
  24.                         textureCoord[0], textureCoord[1], textureCoord[2],
  25.                         tangent_now,         bitangent_now
  26.                 );
  27.                        
  28.             trianglePosition.pop_back(); trianglePosition.pop_back(); trianglePosition.pop_back();
  29.             textureCoord.pop_back(); textureCoord.pop_back(); textureCoord.pop_back();
  30.                        
  31.             tangent.push_back(tangent_now);
  32.             bitangent.push_back(bitangent_now);
  33.         }
  34.  
  35.         //------
  36.         float tangent_trans[3] = {tangent[i].x, tangent[i].y, tangent[i].z};
  37.         float bitangent_trans[3] = {bitangent[i].x, bitangent[i].y, bitangent[i].z};
  38.         glMultiTexCoord2fv(GL_TEXTURE0, object->tList[object->faceList[i][j].t].ptr);
  39.         glMultiTexCoord2fv(GL_TEXTURE1, object->tList[object->faceList[i][j].t].ptr);
  40.         glMultiTexCoord3fv(GL_TEXTURE2, tangent_trans);
  41.         glMultiTexCoord3fv(GL_TEXTURE3, bitangent_trans);
  42.         //------
  43.         glNormal3fv(object->nList[object->faceList[i][j].n].ptr);
  44.         glVertex3fv(object->vList[object->faceList[i][j].v].ptr);
  45.     }
  46. glEnd();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement