nuclear@5: #include nuclear@5: #include nuclear@27: #ifdef WIN32 nuclear@27: #include nuclear@27: #endif /* WIN32 */ nuclear@12: #ifndef __APPLE__ nuclear@5: #include nuclear@12: #else nuclear@12: #include nuclear@12: #endif nuclear@5: #include "sgl.h" nuclear@5: nuclear@5: void disp(void); nuclear@5: void reshape(int x, int y); nuclear@5: void keyb(int key, int state); nuclear@6: void mouse(int pidx, int bn, int state, int x, int y); nuclear@6: void motion(int pidx, int x, int y); nuclear@5: nuclear@5: nuclear@5: int main(void) nuclear@5: { nuclear@5: if(sgl_init() == -1) { nuclear@5: return 1; nuclear@5: } nuclear@5: nuclear@5: sgl_create_window(640, 480, SGL_DOUBLE | SGL_DEPTH); nuclear@5: nuclear@6: sgl_display_callback(disp); nuclear@6: sgl_reshape_callback(reshape); nuclear@6: sgl_keyboard_callback(keyb); nuclear@6: sgl_mouse_callback(mouse); nuclear@6: sgl_motion_callback(motion); nuclear@5: nuclear@5: sgl_event_loop(); nuclear@5: sgl_quit(); nuclear@5: return 0; nuclear@5: } nuclear@5: nuclear@5: nuclear@5: void disp(void) nuclear@5: { nuclear@5: printf("redisplay\n"); nuclear@5: nuclear@5: glClearColor(0.2, 0.2, 0.2, 1); nuclear@5: glClear(GL_COLOR_BUFFER_BIT); nuclear@5: nuclear@5: glBegin(GL_QUADS); nuclear@5: glColor3f(1, 0, 0); nuclear@5: glVertex2f(-1, -1); nuclear@5: glColor3f(0, 1, 0); nuclear@5: glVertex2f(1, -1); nuclear@5: glColor3f(0, 0, 1); nuclear@5: glVertex2f(1, 1); nuclear@5: glColor3f(1, 1, 0); nuclear@5: glVertex2f(-1, 1); nuclear@5: glEnd(); nuclear@5: nuclear@5: sgl_swap_buffers(); nuclear@5: } nuclear@5: nuclear@5: void reshape(int x, int y) nuclear@5: { nuclear@5: printf("reshape: %dx%d\n", x, y); nuclear@5: glViewport(0, 0, x, y); nuclear@5: } nuclear@5: nuclear@5: void keyb(int key, int state) nuclear@5: { nuclear@5: char *ststr = state ? "pressed" : "released"; nuclear@5: nuclear@5: if(key < 0xff && isprint(key)) { nuclear@5: printf("keyboard: '%c' %s\n", (char)key, ststr); nuclear@5: } else { nuclear@5: printf("keyboard: %x %s\n", key, ststr); nuclear@5: } nuclear@5: nuclear@5: if(key == 27) { nuclear@5: sgl_quit(); nuclear@5: } nuclear@5: } nuclear@5: nuclear@6: void mouse(int pidx, int bn, int state, int x, int y) nuclear@5: { nuclear@5: printf("mouse: button%d %s (ptr: %d %d)\n", bn, state ? "pressed" : "released", x, y); nuclear@5: } nuclear@5: nuclear@6: void motion(int pidx, int x, int y) nuclear@5: { nuclear@5: printf("mouse dragged to: (%d %d)\n", x, y); nuclear@5: }