This final section is the heart of the porting discussion. We present some source code as a means to illustrate how CAVElibs™ concepts map to VR Juggler.
1 void app_shared_init();
void app_compute_init();
void app_init_gl();
void app_draw();
5 void app_compute();
void main(int argc, char **argv)
{
CAVEConfigure(&argc,argv,NULL);
10 app_shared_init(argc,argv);
CAVEInit();
CAVEInitApplication(app_init_gl,0);
CAVEDisplay(app_draw,0);
app_compute_init(argc,argv);
15 while (!getbutton(ESCKEY))
{
app_compute();
}
CAVEExit();
20 } 1 class MyApplication : public vrj::GlApp
{
public:
// Data callbacks (Do not put OpenGL code here)
5 virtual void init();
virtual void preFrame();
virtual void intraFrame();
virtual void postFrame();
10 // OpenGL callbacks (put only OpenGL code here)
virtual void contextInit();
virtual void draw();
};
15 int main(int argc, char* argv[])
{
// configure kernel with *.config files
vrj::Kernel* kernel = vrj::Kernel::instance(); // Get the kernel
for(int i=1; i<argc; i++)
20 {
// loading config file passed on command line...
kernel->loadConfigFile(argv[i]);
}
25 // start the kernel
kernel->start();
// set the application for the kernel to run
MyApplication* application = new MyApplication();
30 kernel->setApplication(application);
// Block until the kernel exits.
kernel->waitForKernelStop();
35 return 0;
}