我是新手。。关于Opengl编程的问题。。? 400 报错
各位大虾好。最近在编一个程序,关于机器人的。因为我之前不太懂编程,所以这次遇到了些问题。下面是我程序的部分代码:
GLfloat x = 0;
GLfloat y = 0;
GLint menu_id = 0;
GLUquadricObj *p;
GLboolean play = GL_FALSE;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glTranslatef(x, y, 0.0);
glColor3f(0.0, 0.0, 0.0);
object();
glutSwapBuffers();
}
void idle()
{
if (play) {
x += 0.1;
y += 0.1;
if (x > 8-0.5*torso_length) x = -8+0.5*torso_length;
if (y > 8-2*torso_radius-neck_height-2*head_bottomRadius) y = -8+2*leg_height+0.02+torso_radius;
}
else {
}
glutPostRedisplay();
}
void mymenu(int id)
{
if(id == 1) idle();
if(id == 2) return;
if(id == 3) return;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(600, 600);
glutInitWindowPosition(0 ,0);
glutCreateWindow("Lab4");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glEnable(GL_DEPTH_TEST);
init();
menu_id = glutCreateMenu(mymenu);
glutAddMenuEntry("Translating", 1);
glutAddMenuEntry("Bending", 2);
glutAddMenuEntry("Rotating", 3);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutIdleFunc(idle);
glutMainLoop();
}
需求是这样的,创建一个menu来控制机器人,其中有一项是对机器人的整体平移,要求第一次点击菜单那项时,机器人移动,第二次点时停止。我先把所有的组件(胳膊什么的)都在object()这个函数里组装好了。现在我图像、菜单都能正常显示,但是点击菜单它却不动。。我也不知道哪里出错了,请大家帮我看看。。
不太理解OPENGL和机器人有什么关系。你把问题本身得说清楚。
######回复 @炫紫调 : opengl以前我曾摸过一段时间。我个人给你个建议,用C++之类的面向对象先建好模型后,OPENGL只是VIEW部分的工作。别混在一起。######用opengl里的组件画一个立体的机器人,机器人的身体由多个长方体组成。######
你这个上面的代码只是用OpenGL里面的函数实现了组合图形的显示,并没有具体的操作事件触发代码!实现的方法有许多,这里就不赘述了!
######请高手分析下……迷茫ing~######id==1的话程序会调用idle(),在这个函数里有触发的全局变量play啊。。###### void mymenu(int id)}
id是你的菜单id,这里要添加你的相应函数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。