Equalizer  1.4.1
hello.cpp
00001 
00002 /* Copyright (c) 2007-2012, Stefan Eilemann <eile@equalizergraphics.com> 
00003  *
00004  * Redistribution and use in source and binary forms, with or without
00005  * modification, are permitted provided that the following conditions are met:
00006  *
00007  * - Redistributions of source code must retain the above copyright notice, this
00008  *   list of conditions and the following disclaimer.
00009  * - Redistributions in binary form must reproduce the above copyright notice,
00010  *   this list of conditions and the following disclaimer in the documentation
00011  *   and/or other materials provided with the distribution.
00012  * - Neither the name of Eyescale Software GmbH nor the names of its
00013  *   contributors may be used to endorse or promote products derived from this
00014  *   software without specific prior written permission.
00015  *
00016  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00019  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
00020  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00021  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00022  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00023  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00024  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00025  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00026  * POSSIBILITY OF SUCH DAMAGE.
00027  *
00028  * Equalizer 'Hello, World!' example. Shows the minimum Equalizer program,
00029  * rendering spinning quads around the origin.
00030  */
00031 
00032 #include <seq/sequel.h>
00033 #include <stdlib.h>
00034 
00035 namespace eqHello
00036 {
00037 class Renderer : public seq::Renderer
00038 {
00039 public:
00040     Renderer( seq::Application& application ) : seq::Renderer( application ) {}
00041     virtual ~Renderer() {}
00042 
00043 protected:
00044     virtual void draw( co::Object* frameData );
00045 };
00046 
00047 class Application : public seq::Application
00048 {
00049 public:
00050     virtual ~Application() {}
00051     virtual seq::Renderer* createRenderer() { return new Renderer( *this ); }
00052 };
00053 typedef lunchbox::RefPtr< Application > ApplicationPtr;
00054 }
00055 
00056 int main( const int argc, char** argv )
00057 {
00058     eqHello::ApplicationPtr app = new eqHello::Application;
00059 
00060     if( app->init( argc, argv, 0 ) && app->run( 0 ) && app->exit( ))
00061         return EXIT_SUCCESS;
00062     
00063     return EXIT_FAILURE;
00064 }
00065 
00067 void eqHello::Renderer::draw( co::Object* frameData )
00068 {
00069     applyRenderContext(); // set up OpenGL State
00070 
00071     const float lightPos[] = { 0.0f, 0.0f, 1.0f, 0.0f };
00072     glLightfv( GL_LIGHT0, GL_POSITION, lightPos );
00073 
00074     const float lightAmbient[] = { 0.2f, 0.2f, 0.2f, 1.0f };
00075     glLightfv( GL_LIGHT0, GL_AMBIENT, lightAmbient );
00076 
00077     applyModelMatrix(); // global camera
00078 
00079     // render six axis-aligned colored quads around the origin
00080     for( int i = 0; i < 6; i++ )
00081     {
00082         glColor3f( (i&1) ? 0.5f:1.0f, (i&2) ? 1.0f:0.5f, (i&4) ? 1.0f:0.5f );
00083 
00084         glNormal3f( 0.0f, 0.0f, 1.0f );
00085         glBegin( GL_TRIANGLE_STRIP );
00086             glVertex3f(  .7f,  .7f, -1.0f );
00087             glVertex3f( -.7f,  .7f, -1.0f );
00088             glVertex3f(  .7f, -.7f, -1.0f );
00089             glVertex3f( -.7f, -.7f, -1.0f );
00090         glEnd();
00091 
00092         if( i < 3 )
00093             glRotatef(  90.0f, 0.0f, 1.0f, 0.0f );
00094         else if( i == 3 )
00095             glRotatef(  90.0f, 1.0f, 0.0f, 0.0f );
00096         else
00097             glRotatef( 180.0f, 1.0f, 0.0f, 0.0f );
00098     }
00099 }
Generated on Mon Nov 26 2012 14:41:49 for Equalizer 1.4.1 by  doxygen 1.7.6.1