~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tests/cubegeom_pre2.c

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION
 
3
AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN.
 
4
 
 
5
THE ORIGINAL AUTHOR IS KYLE FOLEY.
 
6
 
 
7
THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY
 
8
OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF
 
9
MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE,
 
10
ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE
 
11
RESULTING FROM THE USE, MODIFICATION, OR
 
12
REDISTRIBUTION OF THIS SOFTWARE.
 
13
*/
 
14
 
 
15
#if !EMSCRIPTEN
 
16
#define USE_GLEW 1
 
17
#endif
 
18
 
 
19
#if USE_GLEW
 
20
#include "GL/glew.h"
 
21
#endif
 
22
 
 
23
#include "SDL/SDL.h"
 
24
#if !USE_GLEW
 
25
#include "SDL/SDL_opengl.h"
 
26
#endif
 
27
 
 
28
#include <stdio.h>
 
29
#include <string.h>
 
30
#include <assert.h>
 
31
 
 
32
void verify() {
 
33
  int width = 640, height = 480;
 
34
  unsigned char *data = (unsigned char*)malloc(width*height*4);
 
35
  glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
 
36
  int sum = 0;
 
37
  for (int x = 0; x < width*height*4; x++) {
 
38
    if (x % 4 != 3) sum += x * data[x];
 
39
  }
 
40
#if EMSCRIPTEN
 
41
  int result = sum;
 
42
  REPORT_RESULT();
 
43
#endif
 
44
}
 
45
 
 
46
int main(int argc, char *argv[])
 
47
{
 
48
    SDL_Surface *screen;
 
49
    if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) {
 
50
        printf("Unable to initialize SDL: %s\n", SDL_GetError());
 
51
        return 1;
 
52
    }
 
53
 
 
54
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
 
55
    screen = SDL_SetVideoMode( 640, 480, 24, SDL_OPENGL );
 
56
    if ( !screen ) {
 
57
        printf("Unable to set video mode: %s\n", SDL_GetError());
 
58
        return 1;
 
59
    }
 
60
    
 
61
    glClearColor( 0, 0, 0, 0 );
 
62
    glClear( GL_COLOR_BUFFER_BIT );
 
63
 
 
64
    // Create a texture
 
65
 
 
66
    GLuint texture;
 
67
    glGenTextures( 1, &texture );
 
68
    glBindTexture( GL_TEXTURE_2D, texture );
 
69
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
 
70
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
 
71
    GLubyte textureData[16*16*4];
 
72
    for (int x = 0; x < 16; x++) {
 
73
      for (int y = 0; y < 16; y++) {
 
74
        *((int*)&textureData[(x*16 + y) * 4]) = x*16 + ((y*16) << 8);
 
75
      }
 
76
    }
 
77
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0,
 
78
                  GL_RGBA, GL_UNSIGNED_BYTE, textureData );
 
79
 
 
80
    // Create a second texture
 
81
 
 
82
    GLuint texture2;
 
83
    glGenTextures( 1, &texture2 );
 
84
    glBindTexture( GL_TEXTURE_2D, texture2 );
 
85
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
 
86
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
 
87
    GLubyte texture2Data[] = { 0xff,    0,    0, 0xff,
 
88
                                  0, 0xff,    0, 0xaa,
 
89
                                  0,    0, 0xff, 0x55,
 
90
                               0x80, 0x90, 0x70,    0 };
 
91
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0,
 
92
                  GL_RGBA, GL_UNSIGNED_BYTE, texture2Data );
 
93
    
 
94
    // BEGIN
 
95
 
 
96
#if USE_GLEW
 
97
    glewInit();
 
98
#endif
 
99
 
 
100
    glMatrixMode(GL_PROJECTION);
 
101
    glLoadIdentity();
 
102
    // original: glFrustum(-0.6435469817188064, 0.6435469817188064 ,-0.48266022190470925, 0.48266022190470925 ,0.5400000214576721, 2048);
 
103
    //glFrustum(-0.6435469817188064, 0.1435469817188064 ,-0.48266022190470925, 0.88266022190470925 ,0.5400000214576721, 2048);
 
104
    GLfloat pm[] = { 1.372136116027832, 0, 0, 0, 0, 0.7910231351852417, 0, 0, -0.6352481842041016, 0.29297152161598206, -1.0005275011062622, -1, 0, 0, -1.080284833908081, 0 };
 
105
    glLoadMatrixf(pm);
 
106
 
 
107
    glMatrixMode(GL_MODELVIEW);
 
108
    GLfloat matrixData[] = { -1, 0, 0, 0,
 
109
                              0, 0,-1, 0,
 
110
                              0, 1, 0, 0,
 
111
                              0, 0, 0, 1 };
 
112
    glLoadMatrixf(matrixData);
 
113
    //glTranslated(-512,-512,-527); // XXX this should be uncommented, but if it is then nothing is shown
 
114
 
 
115
//    glEnable(GL_CULL_FACE);
 
116
  //  glEnable(GL_DEPTH_TEST);
 
117
 
 
118
    //glClear(GL_DEPTH_BUFFER_BIT);
 
119
 
 
120
//    glEnableClientState(GL_NORMAL_ARRAY);
 
121
  //  glEnableClientState(GL_COLOR_ARRAY);
 
122
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 
123
 
 
124
    glActiveTexture(GL_TEXTURE0);
 
125
 
 
126
    glEnableClientState(GL_VERTEX_ARRAY);
 
127
 
 
128
    GLuint arrayBuffer, elementBuffer;
 
129
    glGenBuffers(1, &arrayBuffer);
 
130
    glGenBuffers(1, &elementBuffer);
 
131
 
 
132
    GLubyte arrayData[] = {
 
133
/*
 
134
[0, 0,   0, 67] ==>  128 float
 
135
[0, 0, 128, 67] ==>  256 float
 
136
[0, 0,   0, 68] ==>  512 float
 
137
[0, 0, 128, 68] ==> 1024 float
 
138
 
 
139
[vertex x        ] [vertex y         ] [vertex z         ] [nr]                [texture u        ] [texture v        ] [lm u   ] [lm v   ] [color r,g,b,a    ] */
 
140
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128, //  0
 
141
  0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128, //  1
 
142
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, //  2
 
143
  0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, //  3
 
144
  0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128, //  4
 
145
  0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0, 128,  67,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128, //  5
 
146
  0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0, 128,  67,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, //  6
 
147
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, //  7
 
148
  0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, //  8
 
149
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, //  9
 
150
  0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0, 128,  67,   0,   0,   0,   0, 128, 128, 128, 128, // 10
 
151
  0,   0,   0,   0,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128,  67,   0,   0,   0,   0, 128, 128, 128, 128, // 11
 
152
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, // 12
 
153
  0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0, 128,  67,   0,   0,   0,  67,   0,   0,   0,   0, 128, 128, 128, 128, // 13
 
154
  0,   0, 128,  68,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0, 128,  67,   0,   0, 128,  67,   0,   0,   0,   0, 128, 128, 128, 128, // 14
 
155
  0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  67,   0,   0, 128,  67,   0,   0,   0,   0, 128, 128, 128, 128, // 15
 
156
 
 
157
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
158
  0,   0,   0,  68,   0,   0,   0,   0,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
159
  0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
160
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
161
  0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
162
  0,   0,   0,   0,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
163
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
164
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
165
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
166
  0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
167
  0,   0,   0,  68,   0,   0,   0,   0,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
168
  0,   0, 128,  68,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
169
  0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
170
  0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
171
  0,   0,   0,  68,   0,   0, 128,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
172
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
173
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
174
  0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
175
  0,   0,   0,   0,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
176
  0,   0,   0,   0,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
177
  0,   0,   0,   0,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
178
  0,   0,   0,  68,   0,   0, 128,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
179
  0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
180
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
181
  0,   0,   0,  68,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
182
  0,   0, 128,  68,   0,   0,   0,  68,   0,   0, 128,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
183
  0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128,
 
184
  0,   0, 128,  68,   0,   0, 128,  68,   0,   0,   0,  68,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 128, 128, 128, 128
 
185
    };
 
186
    assert(sizeof(arrayData) == 1408);
 
187
    glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer);
 
188
    glBufferData(GL_ARRAY_BUFFER, sizeof(arrayData), arrayData, GL_STATIC_DRAW);
 
189
    glBindBuffer(GL_ARRAY_BUFFER, 0);
 
190
 
 
191
    GLushort elementData[] = { 1, 2, 0, 2, 3, 0, 5, 6, 4, 6, 7, 4, 9, 10, 8, 10, 11, 8, 13, 14, 12, 14, 15, 12 };
 
192
    assert(sizeof(elementData) == 48);
 
193
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer);
 
194
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elementData), elementData, GL_STATIC_DRAW);
 
195
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
 
196
 
 
197
    glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer);
 
198
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer);
 
199
 
 
200
    // sauer vertex data is apparently 0-12: V3F, 12: N1B, 16-24: T2F, 24-28: T2S, 28-32: C4B
 
201
    glVertexPointer(3, GL_FLOAT, 32, (void*)0); // all these apply to the ARRAY_BUFFER that is bound
 
202
    glTexCoordPointer(2, GL_FLOAT, 32, (void*)16);
 
203
//    glClientActiveTexture(GL_TEXTURE1); // XXX seems to be ignored in native build
 
204
//    glTexCoordPointer(2, GL_SHORT, 32, (void*)24);
 
205
//    glClientActiveTexture(GL_TEXTURE0); // likely not needed, it is a cleanup
 
206
//    glNormalPointer(GL_BYTE, 32, (void*)12);
 
207
//    glColorPointer(4, GL_UNSIGNED_BYTE, 32, (void*)28);
 
208
 
 
209
    glBindTexture(GL_TEXTURE_2D, texture); // diffuse?
 
210
    glActiveTexture(GL_TEXTURE0);
 
211
    glActiveTexture(GL_TEXTURE1);
 
212
    glBindTexture(GL_TEXTURE_2D, texture2); // lightmap?
 
213
    glActiveTexture(GL_TEXTURE0);
 
214
 
 
215
    GLint ok;
 
216
 
 
217
    const char *vertexShader = "uniform mat4 u_modelView;\n"
 
218
                               "uniform mat4 u_projection;\n"
 
219
                               "varying vec4 v_texCoord0;\n"
 
220
                               "void main(void)\n"
 
221
                               "{\n" // (gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex)
 
222
                                     // (u_projection * u_modelView * a_position)
 
223
                               "    gl_Position = (u_projection * u_modelView * gl_Vertex) + vec4(200, 0, 0, 0);\n"
 
224
                               "    v_texCoord0.xy = gl_MultiTexCoord0.xy/20.0;\n" // added /100 here
 
225
                               "}\n";
 
226
    const char *fragmentShader = "uniform sampler2D diffusemap;\n"
 
227
                                 "varying vec4 v_texCoord0;\n"
 
228
                                 "void main(void)\n"
 
229
                                 "{\n"
 
230
                                 "    vec4 diffuse = texture2D(diffusemap, v_texCoord0.xy);\n"
 
231
                                 "    gl_FragColor = diffuse;\n"
 
232
                                 "}\n";
 
233
 
 
234
    GLuint vs = glCreateShader(GL_VERTEX_SHADER);
 
235
    glShaderSource(vs, 1, &vertexShader, NULL);
 
236
    glCompileShader(vs);
 
237
    glGetShaderiv(vs, GL_COMPILE_STATUS, &ok);
 
238
    if (!ok) {
 
239
      printf("Shader compilation error with vertex\n");
 
240
      GLint infoLen = 0;
 
241
      glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen);
 
242
      if (infoLen > 1)
 
243
      {
 
244
         char* infoLog = (char *)malloc(sizeof(char) * infoLen+1);
 
245
         glGetShaderInfoLog(vs, infoLen, NULL, infoLog);
 
246
         printf("Error compiling shader:\n%s\n", infoLog);            
 
247
      }
 
248
    }
 
249
 
 
250
    GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
 
251
    glShaderSource(fs, 1, &fragmentShader, NULL);
 
252
    glCompileShader(fs);
 
253
    glGetShaderiv(fs, GL_COMPILE_STATUS, &ok);
 
254
    if (!ok) {
 
255
      printf("Shader compilation error with fragment\n");
 
256
      GLint infoLen = 0;
 
257
      glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen);
 
258
      if (infoLen > 1)
 
259
      {
 
260
         char* infoLog = (char *)malloc(sizeof(char) * infoLen+1);
 
261
         glGetShaderInfoLog(vs, infoLen, NULL, infoLog);
 
262
         printf("Error compiling shader:\n%s\n", infoLog);            
 
263
      }
 
264
    }
 
265
 
 
266
    GLuint program = glCreateProgram();
 
267
 
 
268
    glAttachShader(program, vs);
 
269
    glAttachShader(program, fs);
 
270
    glLinkProgram(program);
 
271
    glGetProgramiv(program, GL_LINK_STATUS, &ok);
 
272
    assert(ok);
 
273
 
 
274
    glUseProgram(program);
 
275
 
 
276
    //GLint lightmapLocation = glGetUniformLocation(program, "lightmap");
 
277
    //assert(lightmapLocation >= 0);
 
278
    //glUniform1i(lightmapLocation, 1); // sampler2D? Is it the texture unit?
 
279
 
 
280
    GLint diffusemapLocation = glGetUniformLocation(program, "diffusemap");
 
281
    assert(diffusemapLocation >= 0);
 
282
    glUniform1i(diffusemapLocation, 0);
 
283
 
 
284
    //GLint texgenscrollLocation = glGetUniformLocation(program, "texgenscroll");
 
285
    //assert(texgenscrollLocation >= 0);
 
286
 
 
287
    //GLint colorparamsLocation = glGetUniformLocation(program, "colorparams");
 
288
    //assert(colorparamsLocation >= 0);
 
289
 
 
290
    //GLfloat texgenscrollData[] = { 0, 0, 0, 0 };
 
291
    //glUniform4fv(texgenscrollLocation, 1, texgenscrollData);
 
292
 
 
293
    //GLfloat colorparamsData[] = { 2, 2, 2, 1 };
 
294
    //glUniform4fv(colorparamsLocation, 1, colorparamsData);
 
295
 
 
296
    {
 
297
      GLfloat data[16];
 
298
      glGetFloatv(GL_MODELVIEW_MATRIX, data);
 
299
      printf("Modelview: ");
 
300
      for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]);
 
301
      printf("\n");
 
302
      //memset(data, 0, 16*4);
 
303
      GLint modelViewLocation = glGetUniformLocation(program, "u_modelView");
 
304
      assert(modelViewLocation >= 0);
 
305
      glUniformMatrix4fv(modelViewLocation, 1, GL_FALSE, data);
 
306
    }
 
307
    {
 
308
      GLfloat data[16];
 
309
      glGetFloatv(GL_PROJECTION_MATRIX, data);
 
310
      printf("Projection: ");
 
311
      for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]);
 
312
      printf("\n");
 
313
      //memset(data, 0, 16*4);
 
314
      GLint projectionLocation = glGetUniformLocation(program, "u_projection");
 
315
      assert(projectionLocation >= 0);
 
316
      glUniformMatrix4fv(projectionLocation, 1, GL_FALSE, data);
 
317
    }
 
318
 
 
319
/*
 
320
    glBindAttribLocation(program, 0, "a_position");
 
321
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 32, (void*)0);
 
322
    glEnableVertexAttribArray(0);
 
323
 
 
324
    glBindAttribLocation(program, 1, "v_texCoord0");
 
325
    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 32, (void*)16);
 
326
    glEnableVertexAttribArray(1);
 
327
*/
 
328
 
 
329
    glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)12);
 
330
    glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*) 0);
 
331
    glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)24);
 
332
    glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)36);
 
333
 
 
334
    // END
 
335
 
 
336
    SDL_GL_SwapBuffers();
 
337
 
 
338
    verify();
 
339
  
 
340
#if !EMSCRIPTEN
 
341
    SDL_Delay(1500);
 
342
#endif
 
343
 
 
344
 //   SDL_Quit();
 
345
    
 
346
    return 0;
 
347
}
 
348