您的位置:首页 > 运维架构

opengl 鼠标拾取

2010-03-28 12:55 274 查看
代码

void GLWidget::MousePick(QPoint pos)
{
#ifndef SIZE
#define SIZE 30
GLuint NameBuffer[SIZE];    //名称缓存
GLint viewport[4];        //视点
GLint hits;

//设置选择模式参数
glSelectBuffer(SIZE,NameBuffer);
glGetIntegerv (GL_VIEWPORT, viewport);
glMatrixMode(GL_PROJECTION);
glRenderMode(GL_SELECT);

//保存矩阵
glPushMatrix();
glLoadIdentity();

//拾取对象
gluPickMatrix((GLdouble)pos.x(),(GLdouble)(viewport[3]-pos.y()),5,5,viewport);
glOrtho(0, 600, 0, 600, 4.0, 15.0);
glMatrixMode(GL_MODELVIEW);
glInitNames();
glPushName(0);
Paint(GL_SELECT);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glFlush();
hits=glRenderMode(GL_RENDER);
qDebug()<<hits;
if(hits>0)
{
qDebug()<<NameBuffer[0]<<NameBuffer[1]<<NameBuffer[2]<<NameBuffer[3]<<NameBuffer[4]<<NameBuffer[5];
}

#endif
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: