Попытка преобразовать openGL в координаты MFC и наличие проблем с “gluProject”

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

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

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

На moush вниз, мне нужна к retrive координата формы от 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
задан Erez 1 June 2010 в 19:07
поделиться

1 ответ

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

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

2
ответ дан 3 September 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: