rev |
line source |
nuclear@0
|
1 #include <stdio.h>
|
nuclear@0
|
2 #include <sys/time.h>
|
nuclear@0
|
3 #include <GLES/gl.h>
|
nuclear@0
|
4 #include "app.h"
|
nuclear@0
|
5
|
nuclear@0
|
6 static unsigned int get_msec(void);
|
nuclear@0
|
7
|
nuclear@0
|
8 int app_init(void)
|
nuclear@0
|
9 {
|
nuclear@0
|
10 printf("app_init called\n");
|
nuclear@0
|
11
|
nuclear@0
|
12 return 0;
|
nuclear@0
|
13 }
|
nuclear@0
|
14
|
nuclear@0
|
15 void app_cleanup(void)
|
nuclear@0
|
16 {
|
nuclear@0
|
17 printf("app_cleanup called\n");
|
nuclear@0
|
18 }
|
nuclear@0
|
19
|
nuclear@0
|
20 static float vert_col[] = { 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1 };
|
nuclear@0
|
21 static float vert_pos[] = { 0.0, 0.6, 0.0, -0.6, -0.4, 0.0, 0.6, -0.4, 0.0 };
|
nuclear@0
|
22
|
nuclear@0
|
23 void app_display(void)
|
nuclear@0
|
24 {
|
nuclear@0
|
25 unsigned int msec = get_msec();
|
nuclear@0
|
26
|
nuclear@0
|
27 glClearColor(0.1, 0.1, 0.1, 1);
|
nuclear@0
|
28 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
nuclear@0
|
29
|
nuclear@0
|
30 glMatrixMode(GL_MODELVIEW);
|
nuclear@0
|
31 glLoadIdentity();
|
nuclear@0
|
32 glRotatef(msec / 10.0, 0, 0, 1);
|
nuclear@0
|
33
|
nuclear@0
|
34 glEnableClientState(GL_VERTEX_ARRAY);
|
nuclear@0
|
35 glEnableClientState(GL_COLOR_ARRAY);
|
nuclear@0
|
36 glVertexPointer(3, GL_FLOAT, 0, vert_pos);
|
nuclear@0
|
37 glColorPointer(4, GL_FLOAT, 0, vert_col);
|
nuclear@0
|
38
|
nuclear@0
|
39 glDrawArrays(GL_TRIANGLES, 0, 3);
|
nuclear@0
|
40
|
nuclear@0
|
41 glDisableClientState(GL_VERTEX_ARRAY);
|
nuclear@0
|
42 glDisableClientState(GL_COLOR_ARRAY);
|
nuclear@0
|
43
|
nuclear@0
|
44 eglSwapBuffers(dpy, surf);
|
nuclear@0
|
45 }
|
nuclear@0
|
46
|
nuclear@0
|
47 void app_resize(int x, int y)
|
nuclear@0
|
48 {
|
nuclear@0
|
49 printf("app_resize: %dx%d\n", x, y);
|
nuclear@0
|
50 glViewport(0, 0, x, y);
|
nuclear@0
|
51
|
nuclear@0
|
52 float aspect = (float)x / (float)y;
|
nuclear@0
|
53 glMatrixMode(GL_PROJECTION);
|
nuclear@0
|
54 glLoadIdentity();
|
nuclear@0
|
55 glScalef(1, aspect, 1);
|
nuclear@0
|
56 }
|
nuclear@0
|
57
|
nuclear@0
|
58 void app_touch(int id, int press, int x, int y)
|
nuclear@0
|
59 {
|
nuclear@0
|
60 printf("app_touch: %s, id: %d, pos: %d %d\n", press ? "press" : "release", id, x, y);
|
nuclear@0
|
61 }
|
nuclear@0
|
62
|
nuclear@0
|
63 void app_drag(int id, int x, int y)
|
nuclear@0
|
64 {
|
nuclear@0
|
65 printf("app_drag id: %d, pos: %d %d\n", id, x, y);
|
nuclear@0
|
66 }
|
nuclear@0
|
67
|
nuclear@0
|
68 static unsigned int get_msec(void)
|
nuclear@0
|
69 {
|
nuclear@0
|
70 static struct timeval tv0;
|
nuclear@0
|
71 struct timeval tv;
|
nuclear@0
|
72
|
nuclear@0
|
73 gettimeofday(&tv, 0);
|
nuclear@0
|
74
|
nuclear@0
|
75 if(tv0.tv_sec == 0 && tv0.tv_usec == 0) {
|
nuclear@0
|
76 tv0 = tv;
|
nuclear@0
|
77 return 0;
|
nuclear@0
|
78 }
|
nuclear@0
|
79 return (tv.tv_sec - tv0.tv_sec) * 1000 + (tv.tv_usec - tv0.tv_usec) / 1000;
|
nuclear@0
|
80 }
|