游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8052|回复: 1

请教高手们,gluUnProject()函数的正确使用方法

[复制链接]

4

主题

12

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2004-2-26 12:25:00 | 显示全部楼层 |阅读模式
我绘制了一个三维地形,在鼠标移动时,想在状态栏中实时显示三维地形的XYZ坐标,不是屏幕的XY坐标。好像是用gluUnProject()函数,可是我的使用方法不当,得到的realX,realY,realZ坐标总是很大很大,而且都是一样的数,您帮忙看一下:

GLdouble modelMatrix[16];
GLdouble projMatrix[16];
GLint viewport[4];
       
glGetDoublev(GL_MODELVIEW_MATRIX  ,modelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX ,projMatrix);
glGetIntegerv(GL_VIEWPORT,viewport);

int wndX1,wndY1;
wndX1=(int)mousePoint.x;
wndY1= viewport[3] - (int)MousePoint.y;

float wndZ1 ;
glReadBuffer(GL_BACK);
glReadPixels(wndX1,wndY1,1,1,GL_DEPTH_COMPONENT ,GL_FLOAT, &wndZ1);
       
//wndZ1 /= (pow(2.0,32)-1);
       
GLdouble realX,realY,realZ;
gluUnProject(wndX1,wndY1,wndZ1,modelMatrix,projMatrix,viewport,
                                 &realX,&realY,&realZ);        

CString aaa;
aaa.Format("%d,%d,%f\n%f,%f,%f",wndX1,wndY1,wndZ1,realX,realY,realZ);
MessageBox(aaa); [em17]

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2004-12-19 18:44:00 | 显示全部楼层

Re:请教高手们,gluUnProject()函数的正确使用方法

应该是可以的,注意用双缓存,打开深度检测,还有鼠标坐标的正确性.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 19:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表