游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2093|回复: 5

急,请教一个拾取的问题

[复制链接]

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-4-13 11:40:00 | 显示全部楼层 |阅读模式
我在OpenGL中定义了一个立方体,在选择模式下画了它的十二条棱,而且每条棱都给了一个唯一的id,为什么我一拾取,OpenGL会吧所有的十二条棱全部拾取到呢?而且名字堆栈中的minz和maxz是不一样的,画了线以后也loadname了,各位。求救啊!

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2007-4-13 13:29:00 | 显示全部楼层

Re:急,请教一个拾取的问题

呵呵,正好昨天看到一篇文章讲这个的,我贴在博客上,也许对您有一点儿帮助
http://hi.baidu.com/mysticc/blog/item/66409b1c3a27ea8a87d6b6d9.html

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-4-13 14:13:00 | 显示全部楼层

Re:急,请教一个拾取的问题

看了,但怎么解释我这种现象呢?我是以选择模式画什么东西OpenGL都能拾取到!

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-4-13 16:45:00 | 显示全部楼层

Re:急,请教一个拾取的问题

我现在已经发现出问题的原因,但不知道怎么解决。问题是这样的,我写了段画坐标轴的代码,如果加上那段代码就会把所有的以GL_SELECT方式绘制的东西给拾取上,但如果不绘制坐标轴就没问题,我的代码是这样的,麻烦各位高手给看看 谢谢了
画坐标系的函数:
DrawCoordinate(GLenum Mode)
         {   
                 //画三个坐标箭头
                 glPushMatrix();
                 glTranslated(-m_dX*0.6,-m_dY*0.6,-m_dZ*0.6);
                 glColor3f(1.0,0,0);//三个圆锥颜色值
                 Axis(m_dZ,m_clip);//圆锥
                 glRasterPos3d(0,0,m_dZ*2.35/2);
                 glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'Z');
                 glPushMatrix();
                 glRotated(90,0,1.0,0);

                 glColor3f(0,1.0,0);
                 Axis(m_dX,m_clip);
                 glRasterPos3d(0,0,m_dX*2.35/2);
                 glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'X');
                 /*glPopMatrix();*/

                 glRotated(-90,1.0,0,0);
                 /* glPushMatrix();*/
                 glColor3f(0,0,1.0);
                 Axis(m_dY,m_clip);
                 glRasterPos3d(0,0,m_clip*2.35/2);
                 glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'Y');
                 glPopMatrix();

                glPopMatrix();
         }
Axis(double length,double radium)
         {
                 //绘制Z轴,端点为圆锥体
                 length=length*0.6;
                 radium=radium*0.6;
                 glPushMatrix();
                 GLUquadricObj *quadratic=gluNewQuadric();
                 gluCylinder(quadratic,radium/100,radium/100,length*2.15,32,32);
                 gluDeleteQuadric(quadratic);
                 glTranslatef(0,0,length*2.15);
                 glutSolidCone(radium/25,radium/10,120,9);
                 glPopMatrix();
}
程序调用   DrawCoordinate(GL_RENDER);
先谢谢各位了!

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-4-14 00:46:00 | 显示全部楼层

Re:急,请教一个拾取的问题

你的坐标轴绘制在哪里? 类似3dmax那样?

如果是的话,不用在拣选时绘制它。

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-4-16 11:09:00 | 显示全部楼层

Re:急,请教一个拾取的问题

坐标轴的原点在这个地方(-m_dX*0.6,-m_dY*0.6,-m_dZ*0.6),就是有点无法理解,为什么画这个坐标系就会在拾取时把所有以GL_SELECT方式绘制的东西全部放入名字堆栈中??
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 19:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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