ndktest

annotate src/app.c @ 0:1310df7cdf25

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 23 Apr 2015 20:54:02 +0300
parents
children
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 }