GLfloat matProj[16];
GLfloat matModelProj[16];
float InvWidth = 1.0/winWidth;
float InvHeight= 1.0/winHeight;
float vClip[4],vPos[4] = {icon.x,icon.y,icon.fz,1.0f};
glBindTexture(GL_TEXTURE_2D, icon.TexID);
glEnable(GL_TEXTURE_2D);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glGetFloatv(GL_PROJECTION_MATRIX, matProj);
glMultMatrixf(matProj);
glGetFloatv(GL_MODELVIEW_MATRIX,matModelProj);
//multiply modelview-proj matrix with position
Matrix4MultiplyByVector(matModelProj,vPos,vClip);
float dx = (float)icon.SizeX * (float)winWidth *0.5f * vClip[3];
float dy = (float)icon.SizeY * (float)winHeight *0.5f * vClip[3];
float vScr1[4] = {vClip[0] - dx, vClip[1] + dy, vClip[2],vClip[3]};
float vScr2[4] = {vClip[0] - dx, vClip[1] - dy, vClip[2],vClip[3]};
float vScr3[4] = {vClip[0] + dx, vClip[1] - dy, vClip[2],vClip[3]};
float vScr4[4] = {vClip[0] + dx, vClip[1] + dy, vClip[2],vClip[3]};
glPopMatrix();
glBegin(GL_QUADS);
glTexCoord2f(0,0); glVertex4fv(vScr1);
glTexCoord2f(0,1); glVertex4fv(vScr2);
glTexCoord2f(1,1); glVertex4fv(vScr3);
glTexCoord2f(1,0); glVertex4fv(vScr4);
glEnd();
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);