Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Volume/Regular/Unimodal/3d/1B/Intensity/SpecFVR/main.cpp

Go to the documentation of this file.
00001 #include <stdlib.h>
00002 #include "glos.h"
00003 #include <GL/gl.h>
00004 #include <GL/glu.h>
00005 #include <GL/glut.h>
00006 #include <string.h>
00007 #include "vuColour31a.h"
00008 #include "vuSimpleTypes.h"
00009 #include "vuTFunc/vuTFDesignSpec.h"
00010 
00011 #include "Volume.h"
00012 #include "VolSet.h"
00013 #include "TorstensFilters.h"
00014 #include "SimpleDefs.h"
00015 #include "specfvr.h"
00016 
00017 vu1112118       g_Renderer;
00018 vuColour31a     g_Light;
00019 
00020 void InitOpenGL(void)
00021 {
00022     glClearColor(0.8,0.8,0.8,0);
00023     glShadeModel(GL_FLAT);
00024 }
00025 
00026 void Display(void)
00027 {
00028     g_Renderer.render();
00029     glutSwapBuffers();
00030 }
00031 
00032 void Reshape(int w, int h)
00033 {
00034     g_Renderer.resize(w,h);
00035 }
00036 
00037 void Keyboard(unsigned char key, int x, int y)
00038 {
00039     if(!g_Renderer.keyboard(key, x, y)) {
00040         switch(key) 
00041         {
00042             case 'b' : g_Light *= 0.5;
00043                 g_Renderer.setLight(g_Light);
00044                 break;
00045             case 'g': g_Light *= 2;
00046                 g_Renderer.setLight(g_Light);
00047                 break;
00048         }
00049     }
00050     glutPostRedisplay();
00051 }
00052 
00053 int main(int argc, char** argv)
00054 {
00055         if (argc < 2 || argc > 4) {
00056                 cerr << "Usage : " << argv[0] << " <filename> <oversample> <zero pad>\n";
00057                 return -1;
00058         }
00059 
00060         vuTFDesignSpec tf(32,256);
00061         if(!tf.loadTF("frog.spec.tf"))
00062             cout << "Couldn't load frog" << endl;
00063         tf.generateFunction();
00064         g_Light = vuColour31a(tf.getLightNode(0).col);
00065         g_Renderer.setLight(g_Light);
00066         g_Renderer.setTransferFunc(tf);
00067 
00068         float oversample = 1.0;
00069         if (argc > 2) oversample = atof(argv[2]);
00070         if (oversample < 1.0) oversample = 1.0;
00071         g_Renderer.setOversample(oversample);
00072         
00073         float zeroPad = 1.0;
00074         if (argc > 3)
00075         zeroPad= atof(argv[3]);
00076         if (zeroPad < 1.0) zeroPad = ROOT_TWO;
00077         g_Renderer.setZeroPad(zeroPad);
00078 
00079         cout << "Zero pad: " << zeroPad << endl;
00080         cout << "Oversample: " << oversample << endl;
00081 
00082         g_Renderer.setFileName(argv[1]);
00083         bool isread = g_Renderer.read();
00084         cout << "reading " << (isread?"successful":"failed")<<endl;
00085         if(!isread) return -1;
00086 
00087         glutInit(&argc, argv);
00088         glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
00089         glutInitWindowSize(500, 500);
00090         glutCreateWindow("SpectralFVR");
00091 
00092         InitOpenGL();
00093 
00094         glutDisplayFunc(Display);
00095         glutReshapeFunc(Reshape);
00096         glutKeyboardFunc(Keyboard);
00097 
00098         g_Renderer.resize(500,500);
00099         cout<<"resized!"<< endl;
00100         glutMainLoop();
00101 
00102         cout <<"after the looop";
00103         
00104         return 0;
00105 }

Generated on Wed Dec 15 21:20:29 2004 for vuVolume by  doxygen 1.3.9.1