Hi, I’m having a problem when I try to use the select function. I always get hits=0, it doesn’t matter where I click. Here’s the code, but it has changed several times.Originally I followed the tutorial in the Red book and several other places,but after that I have changed the code several times. Here’s the latest version:
void MainWindow::selectElement()
{
GLuint select_buf[SELECT_BUFSIZE];
GLuint hits;
GLint viewport[4];
glGetIntegerv (GL_VIEWPORT, viewport);
glSelectBuffer(SELECT_BUFSIZE, select_buf);
glRenderMode(GL_SELECT);
glInitNames();
glPushName(-1);
int height, width;
height=w->height();
width=w->width();
gluPickMatrix((GLdouble)mouseX,
(GLdouble)viewport[3]-mouseY,
5.0, 5.0,
viewport);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
GLfloat x= (GLfloat) width/height;
glFrustum(-x,x,-1.0,1.0,1.0,1.0);
glMatrixMode(GL_MODELVIEW);
for(int i = 0; i < spisyk.size(); i++){
glLoadName(i);
spisyk[i]->draw();
}
glPopMatrix();
glFlush();
hits = glRenderMode(GL_RENDER);
GLuint hitnames[256];
unsigned int hi = 0;
GLuint name, numnames, z1, z2,j=0;;
if (hits>0)
{
numnames = select_buf[j++];
z1 = select_buf[j++];
z2 = select_buf[j++];
int i=0;
while(i<numnames)
{
hitnames[i]=select_buf[j];
cout << hitnames[i]<< endl;
i++;
}
}
cout << hits << " hitа "<< endl;
}
Any help will be greatly appreciated.