void transformation(void) { glClear(GL_COLOR_BUFFER_BIT); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); return; }
void ParallelPlaneManager::Redraw(){ QMutexLocker locker(&data_mutex_); UpdateActiveSubjects(); osg::Geometry* pointsGeom = geode_->getDrawable(0)->asGeometry(); osg::Geometry* linesGeom = geode_->getDrawable(1)->asGeometry(); { //redraw points osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(); osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array(); vertices->push_back(osg::Vec3f(0,0,0)); //origin vertices->push_back(osg::Vec3f(0,1,0)); //y+ vertices->push_back(osg::Vec3f(1,0,0)); //x+ colors->push_back(osg::Vec4f(1,0,0,1)); colors->push_back(osg::Vec4f(0,1,0,1)); colors->push_back(osg::Vec4f(0,0,1,1)); for(int p = 0; p < planes_.size(); ++p){ RedrawPoints(p,vertices,colors); } pointsGeom->setVertexArray(vertices); pointsGeom->setColorArray(colors, osg::Array::BIND_PER_VERTEX); if(pointsGeom->getNumPrimitiveSets()==0){ pointsGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POINTS,0,vertices->size())); } else { osg::DrawArrays *draw = (osg::DrawArrays*)pointsGeom->getPrimitiveSet(0); draw->setCount(vertices->size()); } } { //redraw lines osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(); osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array(); for(int p = 0; p < planes_.size()-1; ++p){ RedrawLines(p,p+1,vertices,colors); } linesGeom->setVertexArray(vertices); linesGeom->setColorArray(colors, osg::Array::BIND_PER_VERTEX); if(linesGeom->getNumPrimitiveSets()==0){ linesGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES,0,vertices->size())); } else { osg::DrawArrays *draw = (osg::DrawArrays*)linesGeom->getPrimitiveSet(0); draw->setCount(vertices->size()); } } }
static void key(unsigned char key, int x, int y) { glClear(GL_COLOR_BUFFER_BIT); switch (key) { case 27 : case 'q': case 'e': exit(0); break; case 'c': glutSwapBuffers(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clean the screen and the depth buffer RedrawLines(); glutSwapBuffers(); break; case 'w': Translate(0,translation_factor); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; case 's': Translate(0,-translation_factor); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; case 'a': Translate(-translation_factor,0); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; case 'd': Translate(translation_factor,0); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; case '+': Scale(scaling_factor_x,scaling_factor_y); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; case '-': Scale(1/scaling_factor_x,1/scaling_factor_y); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; case 'l': case '1': Rotate(rotation_factor); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; case 'r': case '2': Rotate(-rotation_factor); glutSwapBuffers(); RedrawLines(); glutSwapBuffers(); break; } //glutPostRedisplay(); }