Попытка конвертировать openGL в координаты MFC и проблемы с "gluProject" - PullRequest
1 голос
/ 01 июня 2010

Чтобы прояснить ситуацию, я пытаюсь получить координаты openGL и манипулировать ими в моем коде mfc. не получить объект openGL. Я использую MFC для управления положением объектов в openGL.

Привет, я пытаюсь найти naswer в Интернете и не могу найти полное решение, которое я могу использовать, и это будет работать ...

Я разрабатываю проект MFC со статической картинкой в ​​качестве основы для класса openGL, который рисует детали для моей игры.

Мне нужно получить координату формы из класса openGL.

Я ищу способ преобразовать координаты openGL в координаты MFC, но независимо от того, что я пытаюсь, я получаю мусор после использования gluProject или gluUnProject (я пытался сделать оба пути, но не работает)

GLdouble modelMatrix[16];
  glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix);
  GLdouble projMatrix[16];
  glGetDoublev(GL_PROJECTION_MATRIX,projMatrix);
  int viewport[4];
  glGetIntegerv(GL_VIEWPORT,viewport);

  POINT mouse;              // Stores The X And Y Coords For The Current Mouse Position
  GetCursorPos(&mouse);         // Gets The Current Cursor Coordinates (Mouse Coordinates)
  ScreenToClient(hWnd, &mouse);
  GLdouble winX, winY, winZ;        // Holds Our X, Y and Z Coordinates
  winX; = (float)point.x;     // Holds The Mouse X Coordinate
  winY; = (float)point.y;     // Holds The Mouse Y Coordinate
  winY = (float)viewport[3] - winY;
  glReadPixels(winX, winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);
  GLdouble posX=s1->getPosX(), posY=s1->getPosY(), posZ=s1->getPosZ();    // Hold The Final Values
  gluUnProject( winX, winY, winZ, modelMatrix, projMatrix, viewport, &posX, &posY, &posZ);
  gluProject(posX, posY, posZ, modelMatrix, projMatrix, viewport, &winX, &winY, &winZ);

Это всего лишь часть кода, который я пробовал. Конечно, не gluProject и gluUnProject вместе. просто они оба были здесь, чтобы показать ..... и я знаю, что там много мусора, от некоторых из моих попыток ...

p.s. Я перепробовал еще много комбинаций и примеров из Интернета, и в моем случае ничего не помогло ...

Может кто-нибудь показать мне, как правильно сделать преобразование?

10x

1 Ответ

2 голосов
/ 01 июня 2010

Похоже, вы пытаетесь получить объект (или объекты), которые находятся / находятся в определенной точке. Если это так, gluProject и / или gluUnProject на самом деле не очень подходящий инструмент для этой задачи. OpenGL имеет режим выбора, предназначенный специально для такого рода задач.

При обычном использовании вы указываете небольшой квадрат (например, 5x5 пикселей) вокруг точки щелчка мыши с помощью gluPickMatrix, устанавливаете режим выделения с помощью glRenderMode, устанавливаете буфер с помощью glSwelectBuffer и затем рисуете свою сцену. Рисунок не отображается на экране, но заполняет указанный вами буфер с записями того, что было нарисовано в указанной области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...