在DrawTargets 中画点:
BOOL CRenderView::DrawTargets()
{
double x,y;
for (int loop = 0; loop < 3; loop++)
{
glLoadName(loop);
x = loop / 4.0;
y = loop / 4.0;
Drawpoint((float)x, (float)y);
}
return TRUE;
}在Selection中拾取:
如果被选中的物体个数hits大于0,则画另一个点,这只是权益之计,为了测试
Selection()能否成功。BOOL CRenderView::Selection()
{
GLuint buffer[512];
GLint hits,viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glSelectBuffer(512, buffer);
(void) glRenderMode(GL_SELECT);
glInitNames();
//Initializes The Name Stack
glPushName(0);
glMatrixMode(GL_PROJECTION);
// Selects The Projection Matrix
glPushMatrix();
glLoadIdentity();
gluPickMatrix((GLdouble) mouse_x, (GLdouble)(viewport[3]- mouse_y), 0.1f, 0.1f, viewport);
gluPerspective(45.0f, (GLfloat) (viewport[2]-viewport[0])/ (GLfloat)( viewport[3]-viewport[1]), 0.1f, 1.0f);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
hits = glRenderMode(GL_RENDER);
if (hits > 0)
{
Drawpoint((float)-0.3,(float)-0.3);
return TRUE;
}
else
return FALSE;
}
BOOL CRenderView::DrawTargets()
{
double x,y;
for (int loop = 0; loop < 3; loop++)
{
glLoadName(loop);
x = loop / 4.0;
y = loop / 4.0;
Drawpoint((float)x, (float)y);
}
return TRUE;
}在Selection中拾取:
如果被选中的物体个数hits大于0,则画另一个点,这只是权益之计,为了测试
Selection()能否成功。BOOL CRenderView::Selection()
{
GLuint buffer[512];
GLint hits,viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glSelectBuffer(512, buffer);
(void) glRenderMode(GL_SELECT);
glInitNames();
//Initializes The Name Stack
glPushName(0);
glMatrixMode(GL_PROJECTION);
// Selects The Projection Matrix
glPushMatrix();
glLoadIdentity();
gluPickMatrix((GLdouble) mouse_x, (GLdouble)(viewport[3]- mouse_y), 0.1f, 0.1f, viewport);
gluPerspective(45.0f, (GLfloat) (viewport[2]-viewport[0])/ (GLfloat)( viewport[3]-viewport[1]), 0.1f, 1.0f);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
hits = glRenderMode(GL_RENDER);
if (hits > 0)
{
Drawpoint((float)-0.3,(float)-0.3);
return TRUE;
}
else
return FALSE;
}
解决方案 »
- 用malloc分配内存老出user breakpoint called from code at这个错误
- 为什么我的socket 服务器端 只能收到一次数据 代码如下
- 请问,如何获得某个进程所访问和监听网络的端口信息?就像天网那样,可以看到各个程序的网络连接情况。
- 一个奇怪的问题?
- 怎样在view类中调用CMianFrame类中的onClose函数
- 为什么这段程序老是有问题,望高手指点!
- TextOutW问题
- 新手提问:为什么把图片做为背景后,上面的listbox或者按钮,看不到,点一下才能显示
- 请教一个dll中的通讯问题
- 如何在客户区中显示变量的值,比如int、double等?
- 我的ClassView里的东西不见了,怎么办???????????
- ijl1.5将内存中的位图专成jpeg文件出现不正常现象
GLfloat curprojection_matrix[16];
glGetFloatv(GL_PROJECTION_MATRIX, curprojection_matrix);
glGetIntegerv(GL_VIEWPORT, viewport); glSelectBuffer(BUFFERSIZE, selectbuff);
glRenderMode(GL_SELECT); glInitNames();
glPushName(0); glMatrixMode(GL_PROJECTION);
glPushMatrix(); glLoadIdentity();
gluPickMatrix((GLdouble)point.x, (GLdouble)(viewport[3] - point.y), 5, 5, viewport);
glMultMatrixf(curprojection_matrix);
//画目标
DrawTargets(); glFinish();
glPopMatrix();
hits = glRenderMode(GL_RENDER);