/** The rendering routine, a.k.a., glutDisplayFunc() */ void eqHello::Channel::frameDraw( const eq::uint128_t& spin ) { // setup OpenGL State eq::Channel::frameDraw( spin ); const float lightPos[] = { 0.0f, 0.0f, 1.0f, 0.0f }; glLightfv( GL_LIGHT0, GL_POSITION, lightPos ); const float lightAmbient[] = { 0.2f, 0.2f, 0.2f, 1.0f }; glLightfv( GL_LIGHT0, GL_AMBIENT, lightAmbient ); // rotate scene around the origin glRotatef( static_cast< float >( spin.low( )) * 0.1f, 1.0f, 0.5f, 0.25f ); // render six axis-aligned colored quads around the origin for( int i = 0; i < 6; i++ ) { glColor3f( (i&1) ? 0.5f:1.0f, (i&2) ? 1.0f:0.5f, (i&4) ? 1.0f:0.5f ); glNormal3f( 0.0f, 0.0f, 1.0f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, .7f, -1.0f ); glVertex3f( -.7f, .7f, -1.0f ); glVertex3f( .7f, -.7f, -1.0f ); glVertex3f( -.7f, -.7f, -1.0f ); glEnd(); if( i < 3 ) glRotatef( 90.0f, 0.0f, 1.0f, 0.0f ); else if( i == 3 ) glRotatef( 90.0f, 1.0f, 0.0f, 0.0f ); else glRotatef( 180.0f, 1.0f, 0.0f, 0.0f ); } }
void Channel::_draw( const eq::uint128_t& spin ) { glPushAttrib( GL_ALL_ATTRIB_BITS ); eq::Channel::frameDraw( spin ); glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT ); glEnable( GL_DEPTH_TEST ); #if 0 setNearFar( 0.5f, 5.0f ); const GLfloat lightPosition[] = {5.0f, 0.0f, 5.0f, 0.0f}; const GLfloat lightDiffuse[] = {0.8f, 0.8f, 0.8f, 1.0f}; const GLfloat materialDiffuse[] = {0.8f, 0.8f, 0.8f, 1.0f}; glLightfv( GL_LIGHT0, GL_POSITION, lightPosition ); glLightfv( GL_LIGHT0, GL_DIFFUSE, lightDiffuse ); glMaterialfv( GL_FRONT, GL_DIFFUSE, materialDiffuse ); eq::Matrix4f rotation; eq::Vector3f translation; translation = eq::Vector3f::ZERO; translation.z = -2.f; rotation = eq::Matrix4f::IDENTITY; rotation.rotate_x( static_cast<float>( -M_PI_2 )); rotation.rotate_y( static_cast<float>( -M_PI_2 )); glTranslatef( translation.x, translation.y, translation.z ); glMultMatrixf( rotation.ml ); glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); glColor3f( 1.f, 1.f, 0.f ); glNormal3f( 1.f, -1.f, 0.f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( 1.f, 10.f, 2.5f ); glVertex3f( -1.f, 10.f, 2.5f ); glVertex3f( 1.f,-10.f, -2.5f ); glVertex3f( -1.f,-10.f, -2.5f ); glEnd(); #else const float lightPos[] = { 0.0f, 0.0f, 1.0f, 0.0f }; glLightfv( GL_LIGHT0, GL_POSITION, lightPos ); const float lightAmbient[] = { 0.2f, 0.2f, 0.2f, 1.0f }; glLightfv( GL_LIGHT0, GL_AMBIENT, lightAmbient ); // rotate scene around the origin glRotatef( static_cast< float >( spin.low() + 3 ) * 10, 1.0f, 0.5f, 0.25f ); // render six axis-aligned colored quads around the origin // front glColor3f( 1.0f, 0.5f, 0.5f ); glNormal3f( 0.0f, 0.0f, 1.0f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, .7f, -1.0f ); glVertex3f( -.7f, .7f, -1.0f ); glVertex3f( .7f, -.7f, -1.0f ); glVertex3f( -.7f, -.7f, -1.0f ); glEnd(); // bottom glColor3f( 0.5f, 1.0f, 0.5f ); glNormal3f( 0.0f, 1.0f, 0.0f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, -1.0f, .7f ); glVertex3f( -.7f, -1.0f, .7f ); glVertex3f( .7f, -1.0f, -.7f ); glVertex3f( -.7f, -1.0f, -.7f ); glEnd(); // back glColor3f( 0.5f, 0.5f, 1.0f ); glNormal3f( 0.0f, 0.0f, -1.0f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, .7f, 1.0f ); glVertex3f( -.7f, .7f, 1.0f ); glVertex3f( .7f, -.7f, 1.0f ); glVertex3f( -.7f, -.7f, 1.0f ); glEnd(); // top glColor3f( 1.0f, 1.0f, 0.5f ); glNormal3f( 0.f, -1.f, 0.f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, 1.0f, .7f ); glVertex3f( -.7f, 1.0f, .7f ); glVertex3f( .7f, 1.0f, -.7f ); glVertex3f( -.7f, 1.0f, -.7f ); glEnd(); // right glColor3f( 1.0f, 0.5f, 1.0f ); glNormal3f( -1.f, 0.f, 0.f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( 1.0f, .7f, .7f ); glVertex3f( 1.0f, -.7f, .7f ); glVertex3f( 1.0f, .7f, -.7f ); glVertex3f( 1.0f, -.7f, -.7f ); glEnd(); // left glColor3f( 0.5f, 1.0f, 1.0f ); glNormal3f( 1.f, 0.f, 0.f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( -1.0f, .7f, .7f ); glVertex3f( -1.0f, -.7f, .7f ); glVertex3f( -1.0f, .7f, -.7f ); glVertex3f( -1.0f, -.7f, -.7f ); glEnd(); #endif glPopAttrib( ); }
void Channel::_draw( const eq::uint128_t& spin ) { bindFrameBuffer(); EQ_GL_CALL( glPushAttrib( GL_ALL_ATTRIB_BITS )); eq::Channel::frameDraw( spin ); EQ_GL_CALL( glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT )); EQ_GL_CALL( glEnable( GL_DEPTH_TEST )); const float lightPos[] = { 0.0f, 0.0f, 1.0f, 0.0f }; glLightfv( GL_LIGHT0, GL_POSITION, lightPos ); const float lightAmbient[] = { 0.2f, 0.2f, 0.2f, 1.0f }; glLightfv( GL_LIGHT0, GL_AMBIENT, lightAmbient ); // rotate scene around the origin glRotatef( static_cast< float >( spin.low() + 3 ) * 10, 1.0f, 0.5f, 0.25f ); // render six axis-aligned colored quads around the origin // front glColor3f( 1.0f, 0.5f, 0.5f ); glNormal3f( 0.0f, 0.0f, 1.0f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, .7f, -1.0f ); glVertex3f( -.7f, .7f, -1.0f ); glVertex3f( .7f, -.7f, -1.0f ); glVertex3f( -.7f, -.7f, -1.0f ); glEnd(); // bottom glColor3f( 0.5f, 1.0f, 0.5f ); glNormal3f( 0.0f, 1.0f, 0.0f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, -1.0f, .7f ); glVertex3f( -.7f, -1.0f, .7f ); glVertex3f( .7f, -1.0f, -.7f ); glVertex3f( -.7f, -1.0f, -.7f ); glEnd(); // back glColor3f( 0.5f, 0.5f, 1.0f ); glNormal3f( 0.0f, 0.0f, -1.0f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, .7f, 1.0f ); glVertex3f( -.7f, .7f, 1.0f ); glVertex3f( .7f, -.7f, 1.0f ); glVertex3f( -.7f, -.7f, 1.0f ); glEnd(); // top glColor3f( 1.0f, 1.0f, 0.5f ); glNormal3f( 0.f, -1.f, 0.f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( .7f, 1.0f, .7f ); glVertex3f( -.7f, 1.0f, .7f ); glVertex3f( .7f, 1.0f, -.7f ); glVertex3f( -.7f, 1.0f, -.7f ); glEnd(); // right glColor3f( 1.0f, 0.5f, 1.0f ); glNormal3f( -1.f, 0.f, 0.f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( 1.0f, .7f, .7f ); glVertex3f( 1.0f, -.7f, .7f ); glVertex3f( 1.0f, .7f, -.7f ); glVertex3f( 1.0f, -.7f, -.7f ); glEnd(); // left glColor3f( 0.5f, 1.0f, 1.0f ); glNormal3f( 1.f, 0.f, 0.f ); glBegin( GL_TRIANGLE_STRIP ); glVertex3f( -1.0f, .7f, .7f ); glVertex3f( -1.0f, -.7f, .7f ); glVertex3f( -1.0f, .7f, -.7f ); glVertex3f( -1.0f, -.7f, -.7f ); glEnd(); EQ_GL_CALL( glPopAttrib( )); }