游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2919|回复: 4

如何用鼠标获得三维空间中某一点的坐标?

[复制链接]

16

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2006-1-19 16:13:00 | 显示全部楼层 |阅读模式
谢谢

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2006-1-19 20:57:00 | 显示全部楼层

Re:如何用鼠标获得三维空间中某一点的坐标?

First of all you should fetch z value from depth buffer via a function call glReadPixel. Z value will be provide as a parameter passing to gluUnProject(Sorry for my missing spelling ) ,the return value of UnProject functions call will be the data you need.

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-1-20 15:49:00 | 显示全部楼层

Re:如何用鼠标获得三维空间中某一点的坐标?

DX9中有个picking 的例子

13

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
QQ
发表于 2006-1-25 20:14:00 | 显示全部楼层

Re:如何用鼠标获得三维空间中某一点的坐标?

CVector3 GetOGLPos(int x, int y)
{
        GLint viewport[4];
        GLdouble modelview[16];
        GLdouble projection[16];
        GLfloat winX, winY, winZ;
        GLdouble posX, posY, posZ;

        glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
        glGetDoublev( GL_PROJECTION_MATRIX, projection );
        glGetIntegerv( GL_VIEWPORT, viewport );

        winX = (float)x;
        winY = (float)viewport[3] - (float)y;
        glReadPixels( x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );

        gluUnProject( winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);

        return CVector3(posX, posY, posZ);
}

from nehe.gamedev.net

0

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2006-3-12 23:46:00 | 显示全部楼层

Re:如何用鼠标获得三维空间中某一点的坐标?

那位大侠肯赐教一下  小弟 在学OpenGL  qq 382074137  谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 21:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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