VC++多窗口条件下,如何把屏幕坐标转换成OpenGL世界坐标
首先我将窗口利用CSplitterWnd切分成了4个,每个窗口关联了一个视类,并且都进行了初始化。
现在网上流传的程序:
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY, winZ;
GLdouble posX, posY, posZ;
glGetDoublev(GL_MODELVIEW_MATRIX, modelview); //A处
glGetDoublev(GL_PROJECTION_MATRIX, projection); //B处
glGetIntegerv(GL_VIEWPORT, viewport); //C处
winX = (float)x;
winY = (float)viewport[3] - (float)y;
glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);
并不能适用,所以我想问下需要改下什么地方。目前A处,B处,C处调用后,3个数组中全部没有值,不知道是什么原因,有无大神可以给小弟略微讲解一下,小弟不慎感激啊。。。。
PS,需要实现的功能是第一个窗口中有一个点,鼠标移过去点变颜色,相当于动态捕捉,所以把鼠标的坐标转换到世界坐标系中很重要。。。。但。