Выбор объектов мышью OpenGL
Переходя в gluPerspective не могу выбрать объекты. Фрагмент кода обработчика нажатия мыши:
Код:
int height=Screen->Height;
int width=Screen->Width;
GLint viewport[4];
GLuint selBuffer[BUFSIZE];
glSelectBuffer ( BUFSIZE, selBuffer );
glGetIntegerv ( GL_VIEWPORT, viewport );
glMatrixMode ( GL_PROJECTION );
glPushMatrix();
glRenderMode ( GL_SELECT );
glLoadIdentity();
//gluPickMatrix ( (GLdouble)MOUSEX, (GLdouble)(viewport[3] - MOUSEY), 5, 5, viewport );
gluPickMatrix((GLdouble)MOUSEX,(GLdouble)(viewport[3]-(MOUSEY-(cy*2))),5.0,5.0,viewport);
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, .5f ,300.0f);
//gluPerspective ( 60.0, (double)ViewWidth/(double)ViewHeight, 1.0, 1000.0 );
glMatrixMode ( GL_MODELVIEW );
DrawUzel3D(GL_SELECT );
int Found = glRenderMode ( GL_RENDER ); // и это постоянно 0. Бывает редко на 1 перескакивает.
Edit5->Text=AnsiString(Found);
glMatrixMode ( GL_PROJECTION );
glPopMatrix();
glMatrixMode ( GL_MODELVIEW );
void DrawUzel3D (GLenum mode)
{
float H=2;
glInitNames();
glPushName(0);
for(int i=0;i<countUzel;i++)
{
if (mode==GL_SELECT)
{
glLoadName(i+countUch);
}
}
}
int width=Screen->Width;
GLint viewport[4];
GLuint selBuffer[BUFSIZE];
glSelectBuffer ( BUFSIZE, selBuffer );
glGetIntegerv ( GL_VIEWPORT, viewport );
glMatrixMode ( GL_PROJECTION );
glPushMatrix();
glRenderMode ( GL_SELECT );
glLoadIdentity();
//gluPickMatrix ( (GLdouble)MOUSEX, (GLdouble)(viewport[3] - MOUSEY), 5, 5, viewport );
gluPickMatrix((GLdouble)MOUSEX,(GLdouble)(viewport[3]-(MOUSEY-(cy*2))),5.0,5.0,viewport);
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, .5f ,300.0f);
//gluPerspective ( 60.0, (double)ViewWidth/(double)ViewHeight, 1.0, 1000.0 );
glMatrixMode ( GL_MODELVIEW );
DrawUzel3D(GL_SELECT );
int Found = glRenderMode ( GL_RENDER ); // и это постоянно 0. Бывает редко на 1 перескакивает.
Edit5->Text=AnsiString(Found);
glMatrixMode ( GL_PROJECTION );
glPopMatrix();
glMatrixMode ( GL_MODELVIEW );
void DrawUzel3D (GLenum mode)
{
float H=2;
glInitNames();
glPushName(0);
for(int i=0;i<countUzel;i++)
{
if (mode==GL_SELECT)
{
glLoadName(i+countUch);
}
}
}
Подскажите пожалуйста что не так. Здесь хотя бы надо показать сколько объектов под курсором.
Спасибо.
Вопрос решен. Внимательно следите за glViewport