void InMapDraw_QuadDrawer::DrawQuad (int x,int y) { int drawQuadsX = imd->drawQuadsX; CInMapDraw::DrawQuad* dq=&imd->drawQuads[y*drawQuadsX+x]; for(std::list<CInMapDraw::MapPoint>::iterator pi=dq->points.begin();pi!=dq->points.end();++pi){ float3 pos=pi->pos; float3 dif(pos-camera->pos); float camDist=dif.Length(); dif/=camDist; float3 dir1(dif.cross(UpVector)); dir1.Normalize(); float3 dir2(dif.cross(dir1)); unsigned char col[4]; col[0]=pi->color[0]; col[1]=pi->color[1]; col[2]=pi->color[2]; col[3]=200;//intensity*255; float size=6; float3 pos1=pos; float3 pos2=pos1; pos2.y+=100; va->AddVertexTC(pos1-dir1*size, 0.25f,0,col); va->AddVertexTC(pos1+dir1*size, 0.25f,1,col); va->AddVertexTC(pos1+dir1*size+dir2*size, 0.00f,1,col); va->AddVertexTC(pos1-dir1*size+dir2*size, 0.00f,0,col); va->AddVertexTC(pos1-dir1*size,0.75f,0,col); va->AddVertexTC(pos1+dir1*size,0.75f,1,col); va->AddVertexTC(pos2+dir1*size,0.75f,1,col); va->AddVertexTC(pos2-dir1*size,0.75f,0,col); va->AddVertexTC(pos2-dir1*size, 0.25f,0,col); va->AddVertexTC(pos2+dir1*size, 0.25f,1,col); va->AddVertexTC(pos2+dir1*size-dir2*size, 0.00f,1,col); va->AddVertexTC(pos2-dir1*size-dir2*size, 0.00f,0,col); if(pi->label.size()>0){ glPushMatrix(); glTranslatef3(pi->pos+UpVector*105); glScalef(30,30,30); glColor4ub(pi->color[0],pi->color[1],pi->color[2],250); font->glWorldPrint("%s",pi->label.c_str()); glPopMatrix(); glBindTexture(GL_TEXTURE_2D, texture); } } for(std::list<CInMapDraw::MapLine>::iterator li=dq->lines.begin();li!=dq->lines.end();++li){ lineva->AddVertexC(li->pos-(li->pos - camera->pos).Normalize()*26,li->color); lineva->AddVertexC(li->pos2-(li->pos2 - camera->pos).Normalize()*26,li->color); } }