1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| int main(int argc, char** argv)
{
SDL_Surface* screen_surface;
int screen_width = 640;
int screen_height = 480;
int screen_depth = 32;
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
cout << "Impossible to initialize SDL Video." << endl;
return false;
}
atexit(SDL_Quit);
if ((screen_surface = SDL_SetVideoMode(screen_width, screen_height, screen_depth, SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWSURFACE)) == NULL)
{
cout << "Impossible to set video mode (" << screen_width << "x" << screen_height << "x" << screen_depth << ")." << endl;
return false;
}
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClearDepth(1.0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glViewport(0, 0, screen_width, screen_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)screen_width / (GLfloat)screen_height, 0.0, 50.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0 , -5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
float pos[3] = {0.0, 0.0, -5.0};
glLightfv(GL_LIGHT0, GL_POSITION, pos);
SDL_Event event;
float amb[3] = {0.5, 0.5, 0.5};
float dif[3] = {0.6, 0.6, 0.6};
float spe[3] = {0.7, 0.7, 0.7};
float shi[1] = {50.0};
while (true)
{
SDL_PollEvent(&event);
switch(event.type)
{
case SDL_QUIT:
SDL_Quit();
exit(0);
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glRotatef(0.5, 0.1, 0.2, 0.1);
glBegin(GL_QUADS);
glMaterialfv(GL_FRONT,GL_SPECULAR,spe);
glMaterialfv(GL_FRONT,GL_DIFFUSE,dif);
glMaterialfv(GL_FRONT,GL_AMBIENT,amb);
glMaterialfv(GL_FRONT,GL_SHININESS, shi);
glNormal3f(0.0, 0.0, -1.0);
glVertex3f(-1.0, -1.0, -1.0);
glVertex3f(-1.0, 1.0, -1.0);
glVertex3f(1.0, 1.0, -1.0);
glVertex3f(1.0, -1.0, -1.0);
glNormal3f(0.0, 0.0, 1.0);
glVertex3f(-1.0, -1.0, 1.0);
glVertex3f(-1.0, 1.0, 1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertex3f(1.0, -1.0, 1.0);
glEnd();
SDL_GL_SwapBuffers();
}
return 0;
} |
Partager