В общем масштабирование и перемещение по карте я сделал следующим образом: рисую прямоугольник и накладываю на него текстуру в виде карты, а потом командой glTranslatef перемещаю его влево-вправо, а при перемещении по оси z - получается уменьшение-увеличение. Код прорисовки следующий:
Код:
glViewport(0, 0, ClientWidth, ClientHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(7, ClientWidth / ClientHeight, cfltMapMinZoom, cfltMapMaxZoom);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glTranslatef(MapImage.X, MapImage.Y, -MapImage.Zoom);
BeginPaint(Handle, ps);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glPushMatrix;
glBegin (GL_QUADS);
glTexCoord2d (0.0, 0.0);
glVertex2f (-1.0, -1.0);
glTexCoord2d (0.0, 1.0);
glVertex2f (-1.0, 1.0);
glTexCoord2d (1.0, 1.0);
glVertex2f (1.0, 1.0);
glTexCoord2d (1.0, 0.0);
glVertex2f (1.0, -1.0);
glEnd;
glPopMatrix;
SwapBuffers(DC);
EndPaint(Handle, ps);
Теперь вопрос: каким образом можно на карте поставить метку (например треугольник), чтобы он не расползался вместе с картой, но положение было привязано к карте. Т.е. можно ли как-то вписать туда маленькое окно, координаты которого будут указаны в общих координатах, и рисовать в нем уже в координатах этого окошечка? Или может быть есть какие-то другие пути решения проблемы. В OpenGL я новичек, поэтому не знаю всех возможностей. Должен же быть какой-то стандартный подход.