Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Open source 试图将openGL转换为MFC坐标,但遇到问题;gluProject“;_Open Source_Opengl_Mfc - Fatal编程技术网

Open source 试图将openGL转换为MFC坐标,但遇到问题;gluProject“;

Open source 试图将openGL转换为MFC坐标,但遇到问题;gluProject“;,open-source,opengl,mfc,Open Source,Opengl,Mfc,为了澄清问题,我正在尝试获取openGL坐标,并在mfc代码中对其进行操作。不获取openGL对象。我正在使用mfc控制openGL中对象的位置。 嗨,我正在网上寻找naswer,但找不到一个完整的解决方案,我可以使用,这将工作 我正在开发一个MFC项目,使用静态图片作为openGL类的画布,该类为我的游戏绘制图形 在moush-down中,我需要从openGL类中检索形状坐标 我正在寻找一种将openGL坐标转换为MFC坐标的方法,但无论我尝试了什么,在使用gluProject或gluUnPr

为了澄清问题,我正在尝试获取openGL坐标,并在mfc代码中对其进行操作。不获取openGL对象。我正在使用mfc控制openGL中对象的位置。

嗨,我正在网上寻找naswer,但找不到一个完整的解决方案,我可以使用,这将工作

我正在开发一个MFC项目,使用静态图片作为openGL类的画布,该类为我的游戏绘制图形

在moush-down中,我需要从openGL类中检索形状坐标

我正在寻找一种将openGL坐标转换为MFC坐标的方法,但无论我尝试了什么,在使用gluProject或gluUnProject后,我都会收到垃圾(我尝试了两种方法,但non正在工作)

这只是我尝试过的代码的一部分。当然不能同时使用gluProject和gluUnProject。我知道那里有很多垃圾,这是我的一些尝试

p、 我在网上尝试了更多的组合和示例,但在我的情况下似乎没有任何效果

有人能告诉我什么是正确的方式来进行转换吗


10x

看起来您正试图检索位于特定点的对象。如果是这种情况,
gluProject
和/或
glunproject
实际上不是一个非常适合该任务的工具。OpenGL有一个专门用于此类任务的选择模式


在典型使用中,您可以使用
glypickmatrix
在鼠标点击点周围指定一个小正方形(例如5x5像素),使用
glRenderMode
设置选择模式,使用
glsweectbuffer
设置缓冲区,然后绘制场景。绘图不会进入屏幕,而是通过指定区域内的绘图记录填充指定的缓冲区。

MFC坐标与openGL坐标不同,MFC坐标从逻辑屏幕的左上角开始,openGL坐标从屏幕的中间开始。所以我需要一个系统从一个转换到另一个,这样我就可以在我的程序中使用它们。
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);