Показать сообщение отдельно
  #5  
Старый 18.09.2009, 11:33
euronymous euronymous вне форума
Прохожий
 
Регистрация: 11.09.2009
Сообщения: 3
Репутация: 10
По умолчанию

В общем масштабирование и перемещение по карте я сделал следующим образом: рисую прямоугольник и накладываю на него текстуру в виде карты, а потом командой 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 я новичек, поэтому не знаю всех возможностей. Должен же быть какой-то стандартный подход.
Ответить с цитированием