当用glReadPixels读取数据时,碰到一个很怪的现象无论怎么选取,输出的深度都是1.0。哪位高人给详解一下。
glPushMatrix();
GLfloat winZ;
//GLfloat winZ;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The View
glTranslatef(0.0f,0.0f,-12.0f);
GLint Viewport[4];
GLdouble ModelMatrix[16], ProjMatrix[16];
glGetDoublev(GL_MODELVIEW_MATRIX, ModelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX, ProjMatrix);
glGetIntegerv(GL_VIEWPORT, Viewport);
glReadPixels((int)mouse_x, int(Viewport[3] - mouse_y), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );
gluUnProject((GLdouble)mouse_x, (GLdouble)(Viewport[3] - mouse_y), (GLdouble)winZ, ModelMatrix, ProjMatrix, Viewport, &o1x, &o1y, &o1z);
部分代码如上,其中01x是全局变量,而mouse_x是点击屏幕窗口获到的坐标。问题出在 glReadPixels((int)mouse_x, int(Viewport[3] - mouse_y), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ ); 无论我怎么点击屏幕, winZ里的值都是1.0。我在网上找了好久也没找到答案,现在将它发到这里,望各位大侠不啬多多指教!小弟由衷感谢!