Blame |
Last modification |
View Log
| RSS feed
#ifdef _WIN32
# include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#ifndef __APPLE__
# include <GL/gl.h>
# include <GL/glut.h>
#else
# include <OpenGL/gl.h>
# include <GLUT/glut.h>
#endif
#include <AR/gsub.h>
#include <AR/param.h>
#include <AR/ar.h>
int count
= 0;
char *cparam_name
= "Data/camera_para.dat";
ARParam cparam
;
int xsize
= 320;
int ysize
= 240;
float rotate_angle
=0.
;
static void init
(void);
static void cleanup
(void);
static void keyEvent
( unsigned char key
, int x
, int y
);
static void mainLoop
(void);
static void draw
( void );
int main
(int argc
, char **argv
)
{
glutInit
(&argc
, argv
);
init
();
argMainLoop
( NULL
, keyEvent
, mainLoop
);
return (0);
}
static void keyEvent
( unsigned char key
, int x
, int y
)
{
/* quit if the ESC key is pressed */
if( key
== 0x1b ) {
printf("*** %f (frame/sec)\n", (double)count
/arUtilTimer
());
cleanup
();
exit(0);
}
}
/* main loop */
static void mainLoop
(void)
{
if( count
== 100 ) {
printf("*** %f (frame/sec)\n", (double)count
/arUtilTimer
());
count
= 0;
}
if( count
== 0 ) arUtilTimerReset
();
count
++;
rotate_angle
+=1.
;
if (rotate_angle
>360)
{
rotate_angle
=0.
;
}
draw
();
argSwapBuffers
();
}
static void init
( void )
{
ARParam wparam
;
/* set the initial camera parameters */
if( arParamLoad
(cparam_name
, 1, &wparam
) < 0 ) {
printf("Camera parameter load error !!\n");
exit(0);
}
arParamChangeSize
( &wparam
, xsize
, ysize
, &cparam
);
arInitCparam
( &cparam
);
printf("*** Camera Parameter ***\n");
arParamDisp
( &cparam
);
/* open the graphics window */
argInit
( &cparam
, 1.0, 0, 0, 0, 0 );
}
/* cleanup function called when program exits */
static void cleanup
(void)
{
argCleanup
();
}
static void draw
( void )
{
GLfloat mat_ambient
[] = {0.0, 0.0, 1.0, 1.0};
GLfloat mat_flash
[] = {0.0, 0.0, 1.0, 1.0};
GLfloat mat_flash_shiny
[] = {50.0};
GLfloat light_position
[] = {100.0,-200.0,200.0,0.0};
GLfloat ambi
[] = {0.1, 0.1, 0.1, 0.1};
GLfloat lightZeroColor
[] = {0.9, 0.9, 0.9, 0.1};
argDrawMode3D
();
argDraw3dCamera
( 0, 0 );
glClear
(GL_DEPTH_BUFFER_BIT
|GL_COLOR_BUFFER_BIT
);
glEnable
(GL_DEPTH_TEST
);
glDepthFunc
(GL_LEQUAL
);
glEnable
(GL_LIGHTING
);
glEnable
(GL_LIGHT0
);
glLightfv
(GL_LIGHT0
, GL_POSITION
, light_position
);
glLightfv
(GL_LIGHT0
, GL_AMBIENT
, ambi
);
glLightfv
(GL_LIGHT0
, GL_DIFFUSE
, lightZeroColor
);
glMaterialfv
(GL_FRONT
, GL_SPECULAR
, mat_flash
);
glMaterialfv
(GL_FRONT
, GL_SHININESS
, mat_flash_shiny
);
glMaterialfv
(GL_FRONT
, GL_AMBIENT
, mat_ambient
);
glMatrixMode
(GL_MODELVIEW
);
glLoadIdentity
();
glTranslatef
( 0.0, 0.0, 500.0 );
glRotatef
(rotate_angle
,0.
,1.
,0.
);
glRotatef
(180.
,1.
,0.
,0.
);
glutSolidTeapot
(100.0);
glDisable
( GL_LIGHTING
);
glDisable
( GL_DEPTH_TEST
);
}