游戏开发论坛

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

如何把Windows的窗口坐标转化为OpenGL的3D坐标?

[复制链接]

20

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
QQ
发表于 2004-2-14 11:07:00 | 显示全部楼层 |阅读模式
我想让用户在场景上选取一些点,然后绘制并连线。我现在准备用两个试图来确定,一个正视图(确定X和Y坐标),一个俯视图(确定z坐标)。现在的问题是用户在正视图上选取一个点point后,如果把该点的x,y坐标转化为OpenGL坐标系下的x,y坐标?

OpenGL是透视投影模式。


谢谢

7

主题

24

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2004-2-14 13:03:00 | 显示全部楼层

Re:如何把Windows的窗口坐标转化为OpenGL的3D坐标?

float depth[2];
glReadPixel(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);
其中,xpos ,ypos为窗口坐标,m_focuspox为3D世界中的坐标

20

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
QQ
 楼主| 发表于 2004-2-16 08:46:00 | 显示全部楼层

Re:如何把Windows的窗口坐标转化为OpenGL的3D坐标?

谢谢

20

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
QQ
 楼主| 发表于 2004-2-16 13:49:00 | 显示全部楼层

Re:如何把Windows的窗口坐标转化为OpenGL的3D坐标?

可我用
glGetDoublev(GL_MODELVIEW_MATRIX,  ModelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX, ProjMatrix);
后矩阵ModelMatrix和 ProjMatrix里怎么都没有数据呢?

奇怪了!

3

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2004-2-28 04:30:00 | 显示全部楼层

Re:如何把Windows的窗口坐标转化为OpenGL的3D坐标?

同样的问题
恳请赐教
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-25 13:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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