如何在OpenGL点选已经存在的图形,并用鼠标移动

lbg 2003-10-18 02:33:32
就象AutoCAD里面选择物体一样的:鼠标选择后,物体就有一个反应的,表示选中了。

注:本问题100分,其中20分是ljianq(泉深水清)的,感谢他在我的帖子里回答正确,但是我没有多余的分给他,所以在这里补给他的
...全文
386 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbg 2003-10-25
  • 打赏
  • 举报
回复
mei you ren ma ?
lbg 2003-10-23
  • 打赏
  • 举报
回复
是啊
gfh21cn 2003-10-23
  • 打赏
  • 举报
回复
各位高手帮帮忙
kaimy 2003-10-22
  • 打赏
  • 举报
回复
没有做过OPENGL,帮不上忙!
gfh21cn 2003-10-21
  • 打赏
  • 举报
回复
有谁能提供
以下

GLUquadricObj *quadObj;
glNewList(GLuint(ShapList->Count+1), GL_COMPILE);
quadObj = gluNewQuadric ();
gluQuadricDrawStyle(quadObj, GLU_LINE);
gluSphere (quadObj, 1.5, 16, 16);
glEndList();
ShapList->Add(..);

调用的时候
for(...)
glCallList(..);

的“拾取”代码


非常感谢
我愿意出200分
lbg 2003-10-21
  • 打赏
  • 举报
回复
顶一下
shally5 2003-10-20
  • 打赏
  • 举报
回复
假设你以FORM作为OPENGL的绘制场景。
在FORM的MOUSE的DOWN,MOVE,UP事件中作处理
void __fastcall TFormMain::FormMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button!=mbLeft) return;
MouseDown=true;
MouseStartX = X;
MouseStartY = Y;
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::FormMouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if(MouseDown)
{
yrot += (float)(X - MouseStartX);
xrot += (float)(Y - MouseStartY);
MouseStartX=X;
MouseStartY=Y;

}
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::FormMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button!=mbLeft) return;
MouseDown=false;
}

在场景绘制函数中作处理,以下是用鼠标拖动物体转动
void __fastcall TFormMain::DrawGLScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity();
glPushMatrix();
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
你的场景绘制程序。。。
glPopMatrix();
SwapBuffers(hdc);
}



gfh21cn 2003-10-20
  • 打赏
  • 举报
回复
什么函数,说来听听
yjy1001 2003-10-20
  • 打赏
  • 举报
回复
也去看看书……
gfh21cn 2003-10-20
  • 打赏
  • 举报
回复
哦,多谢
“拾取”

书不在身边,回去看看
shally5 2003-10-20
  • 打赏
  • 举报
回复
手边没带书。。。
你可以看一看任一本OPENGL的书,关于OPENGL拾取的那一节
gfh21cn 2003-10-20
  • 打赏
  • 举报
回复
想用鼠标选中一个物体
我是这样动态的创建了一个物体

GLUquadricObj *quadObj;
glNewList(GLuint(ShapList->Count+1), GL_COMPILE);
quadObj = gluNewQuadric ();
gluQuadricDrawStyle(quadObj, GLU_LINE);
gluSphere (quadObj, 1.5, 16, 16);
glEndList();
ShapList->Add(..);

调用的时候
for(...)
glCallList(..);

我想用鼠标选中其中一个圆柱
应该如何做
freshman2003 2003-10-19
  • 打赏
  • 举报
回复
在DirectX里很好办,有一个专门的函数可以判断鼠标是否点中了物体,OpenGL就不知道了,但我想也应该有这样的函数。
hear_rain 2003-10-19
  • 打赏
  • 举报
回复
这个设计到OpenGL选择与拾取吧,好像要定义一对名字栈
具体的我也不太清楚
lbg 2003-10-19
  • 打赏
  • 举报
回复
我搜不到资料啊...
klbt 2003-10-19
  • 打赏
  • 举报
回复
有趣的问题,帮你顶。
lbg 2003-10-18
  • 打赏
  • 举报
回复
没有人来讨论一下么........

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧