qt opengl 物理仿真的问题

目前单纯使用openngl实现了物理仿真,主函数如下

int main(int argc, char * argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
	glutInitWindowSize(1024, 1024);
	glutCreateWindow("Mass-Spring Model");

	initGL1();
	glutDisplayFunc(OnRender);
	//指定窗口形状变化时的回调函数
	glutReshapeFunc(OnReshape);
	glutMouseFunc(Mouse);
	glutMotionFunc(Motion);
	glutSpecialFunc(processSpecialKeys);
	//指定程序空闲时调用函数
	glutIdleFunc(StepPhysics);
	glEnable(GL_DEPTH_TEST);
	glutMainLoop();
	return 0;
}

其中的绘制函数StepPhysics如下:

void StepPhysics(){
	ComputeForces();
	CalcPos();
	glutPostRedisplay();
	DynamicConstrain();
	Sleep(15);
}

但是目前想将其与qt结合成一个界面:

目前实现的如下:

 这只是没有添加物理引擎的状态,因此绳索没有物理属性,只是各点的初始位置:目前我所了解的知识要想结合qt需要三个函数:

这是目前没有添加物理引擎的函数内容,但是不知道该怎么结合单纯opengl中的函数实现实时物理仿真并绘制

void goudan::initializeGL()//在调用paintGL()之前被调用一次,设置openGL的绘图描述表,定义显示列表,以及执行其他的初始化
{
	initGL1();//各点设置初始位置
	qglClearColor(Qt::black);
	glShadeModel(GL_FLAT);
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_CULL_FACE);
}

void goudan::resizeGL(int width, int height)//设置openGL视口,投影以及与其他窗口部件尺寸相关的设置
{
	glViewport(0, 0, width, height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(60, (GLfloat)width / (GLfloat)height, 0.1f, 1000.0f);
	
	glGetIntegerv(GL_VIEWPORT, viewport);
	glGetDoublev(GL_PROJECTION_MATRIX, PP);

	glMatrixMode(GL_MODELVIEW);
}

void goudan::paintGL()//需要重绘的时候调用
{
	glClearColor(0.2, 0.2, 0.2, 0.0);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	glTranslatef(0, 0, -zoom);  //渲染场景
	glTranslatef(tx, ty, 0);
	glRotatef(G_fAngle_horizon, 0.0f, 1.0f, 0.0f);
	glRotatef(G_fAngle_vertical, 1.0f, 0.0f, 0.0f);

	glLightfv(GL_LIGHT1, GL_AMBIENT, ambientLight);
	glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuseLight);
	glLightfv(GL_LIGHT1, GL_SPECULAR, specularLight);
	glLightfv(GL_LIGHT1, GL_POSITION, lightPosition);
	glTranslatef(0.0, 0.0, -G_fDistance);

	glEnable(GL_LIGHT1);
	glEnable(GL_LIGHTING);

	glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
	glEnable(GL_COLOR_MATERIAL);

	drawTextile();//绘图函数


	glDisable(GL_LIGHTING);

	
}

有大神知道该怎么构造并且实现和opengl相同的实时渲染功能么?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^