游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1626|回复: 2

请问如何在OpenGL编程中实现较精确的定位选择!!!

[复制链接]

6

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2005-11-14 10:57:00 | 显示全部楼层 |阅读模式
请问如何在OpenGL编程中实现大范围内的较精确的定位选择!!!

请问如何在OpenGL编程中实现大范围内的较精确的定位选择?我是指用鼠标在窗口中进行选择的方法??
实现 移动,旋转的功能 能给指个思路吗,当然能给个代码将感激不尽!
感谢!本人emai:wangzhao29@tom.com

6

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2005-11-14 18:18:00 | 显示全部楼层

Re:请问如何在OpenGL编程中实现较精确的定位选择!!!

呵呵,跟我要实现的东西好像一样啊!?看来我们以后要好好交流交流啊。怎么OpenGL的选择不能满足你的精确度?

55

主题

331

帖子

337

积分

中级会员

Rank: 3Rank: 3

积分
337
发表于 2005-11-14 22:32:00 | 显示全部楼层

Re:请问如何在OpenGL编程中实现较精确的定位选择!!!

// 首先在你的 Opengl 初始化代码里加入上面一句,它可以让你获取屏幕上某一点的三维坐标
glReadBuffer(GL_BACK);

// 然后请看下面的函数,(摘自<林海雪源>), 我也想做这么个东东,现在只是想好了思路,等我把一些其他的东东忙完了才能做.若做好了再把代码发上来吧
void CHeightmap::GetFocusPos()
{
float depth[2];
int xpos=CGameSetting::m_iScrWidth/2; // 获取屏幕中心点坐标(相对于屏幕的二维坐标)
int ypos=CGameSetting::m_iScrHeight/2;
glReadPixels(xpos,ypos,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,depth); // 获取屏幕中心点的深度(在三维世界中的深度)

GLdouble ModelMatrix[16], ProjMatrix[16];
glGetDoublev(GL_MODELVIEW_MATRIX,  ModelMatrix);// 获取模型转换矩阵
glGetDoublev(GL_PROJECTION_MATRIX, ProjMatrix);// 获取发散矩阵
GLint Viewport[4]={0,0,CGameSetting::m_iScrWidth,CGameSetting::m_iScrHeight}; //获取视口
gluUnProject(xpos,ypos,depth[0],// 求出屏幕中心点在三维世界中的真实坐标
                   ModelMatrix, ProjMatrix, Viewport,
                   &m_focusPosX, &m_focusPosY, &m_focusPosZ);
}

随着这个思路,把函数中的屏幕中心点坐标换成你的鼠标单击点坐标,然后............ [em1] [em1] [em1]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 15:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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