游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2913|回复: 0

请教gluUnProject()的用法,谢谢

[复制链接]

4

主题

12

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2004-2-26 12:23: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);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-14 22:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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