Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- glBegin(GL_TRIANGLES);
- for (size_t j=0;j<3;++j)
- {
- //------ 提早在 j==0 時就丟這個face的三個頂點去計算
- if(j==0)
- {
- for(int k=0 ; k<3 ; k++)
- {
- double x = object->vList[object->faceList[i][k].v].ptr[0];
- double y = object->vList[object->faceList[i][k].v].ptr[1];
- double z = object->vList[object->faceList[i][k].v].ptr[2];
- double tx = object->tList[object->faceList[i][k].t].ptr[0];
- double ty = object->tList[object->faceList[i][k].t].ptr[1];
- Vector3D P(x, y, z);
- Vector3D C(tx, ty, 0);
- trianglePosition.push_back(P);
- textureCoord.push_back(C);
- }
- Vector3D tangent_now(0,0,0);
- Vector3D bitangent_now(0,0,0);
- ComputeTangent( trianglePosition[0], trianglePosition[1], trianglePosition[2],
- textureCoord[0], textureCoord[1], textureCoord[2],
- tangent_now, bitangent_now
- );
- trianglePosition.pop_back(); trianglePosition.pop_back(); trianglePosition.pop_back();
- textureCoord.pop_back(); textureCoord.pop_back(); textureCoord.pop_back();
- tangent.push_back(tangent_now);
- bitangent.push_back(bitangent_now);
- }
- //------
- float tangent_trans[3] = {tangent[i].x, tangent[i].y, tangent[i].z};
- float bitangent_trans[3] = {bitangent[i].x, bitangent[i].y, bitangent[i].z};
- glMultiTexCoord2fv(GL_TEXTURE0, object->tList[object->faceList[i][j].t].ptr);
- glMultiTexCoord2fv(GL_TEXTURE1, object->tList[object->faceList[i][j].t].ptr);
- glMultiTexCoord3fv(GL_TEXTURE2, tangent_trans);
- glMultiTexCoord3fv(GL_TEXTURE3, bitangent_trans);
- //------
- glNormal3fv(object->nList[object->faceList[i][j].n].ptr);
- glVertex3fv(object->vList[object->faceList[i][j].v].ptr);
- }
- glEnd();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement