next up previous
Next: Performer (C API) Up: Programmieren mit der CAVELib Previous: Programmieren mit der CAVELib

Unterabschnitte

OpenGL

Aufbau eines OpenGL/CAVELib-Programmes

1.
CAVEConfigure(&argc, argv, NULL) Liest die Daten aus den Konfigurationsdateien und parst die Programmargumente. Muß vor allen anderen CAVELib-Funktionen aufgerufen werden.
2.
CAVEInit() Initialisiert den CAVE und spaltet alle zusaetzlichen Prozesse ab.
3.
CAVEInitApplication(int, 0) Übergibt der CAVELib einen Pointer auf eine Initialisierungsfunktion. (In welcher üblicherweise OpenGL-Initialisierungen durchgeführt werden)
4.
CAVEDisplay(display, 0) Übergibt der CAVELib einen Zeiger auf die Zeichenfunktion der Application. Diese Displayfunktion wird aufgerufen, um einen neuen Frame zu zeichnen.
5.
Simulationsschleife
6.
CAVEExit() Beendet alle CAVE-Prozesse und setzt den Rechner wieder in den Normalzustand zurück.

Beispielprogramm

Ein kurzes Programm, das einen sich drehenden Wuerfel in die Mitte des CAVEs zeichnet.

cube_ogl.c

/* includes */
#include <stdio.h>
#include <stdlib.h>

#include <cave_ogl.h>
#include <GL/glut.h>

/* prototypes */
void display(void);
void init(void);

/* main */
int main(int argc, char **argv) {

  /* Initialize the CAVE */
  CAVEConfigure(&argc, argv, NULL);
  CAVEInit();

  CAVEInitApplication(init, 0);

  /* Give the library a pointer to the drawing function */
  CAVEDisplay(display, 0);

  /* Wait for the escape key to be hit */
  while (!CAVEgetbutton(CAVE_ESCKEY))
    sginap(10);    

  /* Clean up & exit */
  CAVEExit();

  return(0);

}

/* ------------------------------------------------------------------------ */

void init(void) {

  glClearColor(0.0, 0.0, 0.0, 0.0);
  glShadeModel(GL_SMOOTH);

  glEnable(GL_DEPTH_TEST);

}

void display(void) {

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glColor3f(1.0, 1.0, 1.0);  
  glPushMatrix();
    glTranslatef(0.0, 100.0, 0.0);
    glRotatef(30.0*CAVEGetTime(), 0.0, 1.0, 0.0);
    glutSolidCube(50.0);
  glPopMatrix();

}

Kompilieren eines OpenGL/CAVELib-Programmes

Die CAVELib Header-Dateien liegen auf der merkur im Verzeichnis /usr/local/CAVE/include, dieser Pfad sollte dem C-Compiler mit folgendem Switch übergeben werden: -I/usr/local/CAVE/include

Die CAVELib-Bibliotheken liegen im den Verzeichnissen /usr/local/CAVE/lib, /usr/local/CAVE/lib32 und /usr/local/CAVE/lib64. Je nachdem welche Art von Code erzeugt werden soll (-o32, -n32 oder -64), muß dem Compiler der jeweilige Pfad übergeben werden, mit zum Beispiel: -L/usr/local/CAVE/lib32.

Die folgenden CAVELib/OpenGL-Bibliotheken müssen zu einem ausführbaren Programm gelinkt werden: -lpfcave_ogl -lcave_ogl -lGL -lX11 -lXi -lm

Makefile

Ein kleines Makefile-Tutorial

Diese Makefile kompiliert das obige Beispielprogramm.

Makefile.ogl

TARGET	= cube_ogl
SRC	= $(TARGET).c

CC	= cc
CFLAGS	= -I/usr/local/CAVE/include -n32 $(OPT)
OPT	= -O

CAVELIB	= -L/usr/local/CAVE/lib32 -lcave_ogl -lGLU -lGL -lX11 -lXi -lm
GLUTLIB = -lglut

LIBS	=  $(GLUTLIB) $(CAVELIB)

$(TARGET): $(SRC) 
	$(CC) $(CFLAGS) $? -o $@ $(LIBS)

run: $(TARGET) 
	$(TARGET)
	
clean:

clobber:
	rm -f $(TARGET)


next up previous
Next: Performer (C API) Up: Programmieren mit der CAVELib Previous: Programmieren mit der CAVELib
Mail to: Oliver Schönbrunner
Virtual Reality Center