|
|
void pickSquares(int button, int state, int x, int y)
{
GLuint selectBuf[BUFSIZE];
GLint hits;
GLint viewport[4];
glGetIntegerv (GL_VIEWPORT, viewport);
glSelectBuffer (BUFSIZE, selectBuf);
(void) glRenderMode (GL_SELECT);
glInitNames();
glPushName(0);
glMatrixMode (GL_PROJECTION);
----------------------------------------------------------------------------
glMatrixMode (GL_MODEVIEW);不用这个模式selectBuf没有值??
-----------------------------------------------------------------------------
glPushMatrix ();
glLoadIdentity ();
// 在鼠标位置生成5X5像素区域
gluPickMatrix ((GLdouble) x, (GLdouble) (viewport[3] - y),
5.0, 5.0, viewport);
gluOrtho2D (0.0, 3.0, 0.0, 3.0);
drawSquares (GL_SELECT);
glMatrixMode (GL_PROJECTION);
glPopMatrix ();
glFlush ();
------------------------------------------------------------------------------
glMatrixMode (GL_MODEVIEW);还要加这个,不然重绘后黑屏??
------------------------------------------------------------------------------
hits = glRenderMode (GL_RENDER);
// processHits (hits, selectBuf);
glutPostRedisplay();
}
这个是拾取的例子,我用起来发现GL_PROJECTION模式下seclectBuf得不到值?全部都是初始值,拾取模式后不转成GL_MODEVIEW重绘也是黑屏?最重要的就是不论我选取哪里得到的selectBuf都是固定的值?????请问这个是什么问题,怎么造成的?应该如何改?想了好久都不知道怎么回事,前期的glLoadName(),glPushName(),glPopName(),也都没有问题的,求助阿!各位前辈来看看!请教中。。。
我的QQ:446599565 我是新人,很多东西不会,希望各位前辈提点,在此谢过。 [em24] [em24] [em24] [em17] [em17] [em17] [em7] [em7] [em7] |
|