当用glReadPixels读取数据时,碰到一个很怪的现象无论怎么选取,输出的深度都是1.0。哪位高人给详解一下。

zjwxpy 2008-02-24 11:22:39

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。我在网上找了好久也没找到答案,现在将它发到这里,望各位大侠不啬多多指教!小弟由衷感谢!
...全文
719 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
budweiser 2010-06-01
  • 打赏
  • 举报
回复
mark 一下
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
zjwxpy 2008-02-25
  • 打赏
  • 举报
回复
问题己解决了,
上面的程序没有错, 错的地方在。我把这优代码放在了glBegin之前了,所以glReadPixels每次拾取到1.0。

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧