void UVViewWindow::DrawScene () { Model *mdl = editor->GetMdl (); glDisable (GL_CULL_FACE); glDisable (GL_DEPTH_TEST); glColor3ub (255,255,255); const float border=0.1f; const float scale=2.0f*(1.0f-border); glPushMatrix (); glScalef (scale, scale, 1.0f); glTranslatef (-0.5f,-0.5f,1.0f); if (SetupChannelMask ()) { // draw texture on background glBegin (GL_QUADS); glTexCoord2f(-border, -border); glVertex2f (-border, -border); glTexCoord2f (1.0f+border, -border); glVertex2f (1.0f+border, -border); glTexCoord2f (1.0f+border, 1.0f+border); glVertex2f (1.0f+border, 1.0f+border); glTexCoord2f(-border, 1.0f+border); glVertex2f (-border, 1.0f+border); glEnd (); DisableChannelMask (); } // draw (0,0)-(1,1) texture box glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); glBegin (GL_QUADS); glVertex2f (0.0f, 0.0f); glVertex2f (1.0f, 0.0f); glVertex2f (1.0f, 1.0f); glVertex2f (0.0f, 1.0f); glEnd (); // draw model vertices vector <MdlObject*> objs = mdl->GetObjectList (); for (unsigned int a=0;a<objs.size();a++) { MdlObject *obj = objs[a]; for (PolyIterator pi(obj);!pi.End();pi.Next()) { if (!pi.verts()) continue; glBegin(GL_POLYGON); for (unsigned int v=0;v<pi->verts.size();v++) { Vertex &vrt = (* pi.verts()) [pi->verts[v]]; glVertex2f (vrt.tc[0].x, vrt.tc[0].y); } glEnd (); } } glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); glPopMatrix (); }
void MappingUI::mirrorUVs() { Model* mdl = callback->GetMdl (); vector<MdlObject*> obj = mdl->GetObjectList (); for (unsigned int a=0;a<obj.size();a++) { MdlObject *o = obj[a]; for (VertexIterator vi(o); !vi.End(); vi.Next()) vi->tc[0].x = 1.0f - vi->tc[0].x; } }