working on the demosystem, added libtreestore
[andemo] / src / scr / testb.c
1 #include "demo.h"
2 #include "noise.h"
3
4 static int init(void);
5 static void destroy(void);
6 static void draw(void);
7
8 static unsigned int sdr_foo;
9
10 void regscr_testb(void)
11 {
12         static struct demoscreen scr = { "testb", init, destroy, 0, 0, 0, 0, draw };
13         dsys_add_screen(&scr);
14 }
15
16 static int init(void)
17 {
18         if(!(sdr_foo = get_sdrprog("sdr/foo.v.glsl", "sdr/foo-notex.p.glsl"))) {
19                 return -1;
20         }
21         return 0;
22 }
23
24 static void destroy(void)
25 {
26 }
27
28 #define NX      16
29 #define NY      10
30
31 static void draw(void)
32 {
33         int i, j;
34         float x, y, xr, yr, sz;
35         float t = dsys_time / 700.0f;
36
37         glUseProgram(sdr_foo);
38         gl_begin(GL_QUADS);
39         for(i=0; i<NY; i++) {
40                 y = (i + 0.5f) / (NY/2.0f) - 1.0f;
41                 for(j=0; j<NX; j++) {
42                         x = (j + 0.5f) / (NX/2.0f) - 1.0f;
43                         sz = noise2(x * 5.0f, t) * noise2(y * 5.0f, t) * 2.5f;
44                         if(sz < 0.0f) sz = 0.0f;
45                         if(sz > 1.0f) sz = 1.0f;
46                         xr = sz / NX;
47                         yr = sz / NY;
48
49                         gl_vertex2f(x - xr, y - yr);
50                         gl_vertex2f(x + xr, y - yr);
51                         gl_vertex2f(x + xr, y + yr);
52                         gl_vertex2f(x - xr, y + yr);
53                 }
54         }
55         gl_end();
56 }