~ubuntu-branches/ubuntu/saucy/emscripten/saucy-proposed

« back to all changes in this revision

Viewing changes to tests/cube_explosion.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
    assert(!glIsTexture(1)); // not a texture
 
68
    glGenTextures( 1, &texture );
 
69
    assert(!glIsTexture(texture)); // not a texture until glBindTexture
 
70
    glBindTexture( GL_TEXTURE_2D, texture );
 
71
    assert(glIsTexture(texture)); // NOW it is a texture
 
72
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
 
73
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
 
74
    GLubyte textureData[16*16*4];
 
75
    for (int x = 0; x < 16; x++) {
 
76
      for (int y = 0; y < 16; y++) {
 
77
        *((int*)&textureData[(x*16 + y) * 4]) = x*16 + ((y*16) << 8) + ((y*16) << 16) + 0xff331177;
 
78
      }
 
79
    }
 
80
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, 
 
81
                  GL_RGBA, GL_UNSIGNED_BYTE, textureData );
 
82
 
 
83
    // BEGIN
 
84
 
 
85
#if USE_GLEW
 
86
    glewInit();
 
87
#endif
 
88
 
 
89
    glMatrixMode(GL_PROJECTION);
 
90
    glLoadIdentity();
 
91
    // original: glFrustum(-0.6435469817188064, 0.6435469817188064 ,-0.48266022190470925, 0.48266022190470925 ,0.5400000214576721, 2048);
 
92
    // cubegeom: glFrustum(-0.6435469817188064, 0.1435469817188064, -0.48266022190470925, 0.88266022190470925 ,0.5400000214576721, 2048);
 
93
    glFrustum(-0.6435469817188064, 0.6435469817188064, -0.48266022190470925, 0.48266022190470925, 0.5400000214576721, 2048);
 
94
 
 
95
    glMatrixMode(GL_MODELVIEW);
 
96
    GLfloat matrixData[] = { -1, 0, 0, 0,
 
97
                              0, 0,-1, 0,
 
98
                              0, 1, 0, 0,
 
99
                              0, 0, 0, 1 };
 
100
    glLoadMatrixf(matrixData);
 
101
    // cubegeom glTranslated(-512,-512,-527); // XXX this should be uncommented, but if it is then nothing is shown
 
102
    glRotated(0,  0, 1,  0);
 
103
    glRotated(0, -1, 0,  0);
 
104
    glRotated(0,  0, 0, -1);
 
105
    glTranslated(-512,-512,-527);
 
106
 
 
107
    glEnable(GL_CULL_FACE);
 
108
    glEnable(GL_DEPTH_TEST);
 
109
 
 
110
    glClear(GL_DEPTH_BUFFER_BIT);
 
111
 
 
112
    GLint ok;
 
113
 
 
114
    const char *vertexShader =
 
115
        "uniform vec4 center, animstate;\n"
 
116
        "uniform vec4 texgenS, texgenT;\n"
 
117
        "void main(void)\n"
 
118
        "{\n"
 
119
        "  vec4 wobble = vec4(gl_Vertex.xyz*(1.0 + 0.5*abs(fract(dot(gl_Vertex.xyz, center.xyz) + animstate.w*0.002) - 0.5)), gl_Vertex.w);\n"
 
120
        "  gl_Position = gl_ModelViewProjectionMatrix * wobble;\n"
 
121
        "  gl_FrontColor = gl_Color;\n"
 
122
        "  gl_TexCoord[0].xy = gl_MultiTexCoord0.xy;\n"
 
123
        "  vec2 texgen = vec2(dot(texgenS, gl_Vertex), dot(texgenT, gl_Vertex)); \n"
 
124
        "  gl_TexCoord[1].xy = texgen;\n"
 
125
        "  gl_TexCoord[2].xy = texgen - animstate.w*0.0005;\n"
 
126
        "}\n";
 
127
    const char *fragmentShader =
 
128
        "uniform sampler2D tex2;\n"
 
129
        "uniform sampler2D tex0, tex1;\n"
 
130
        "void main(void)\n"
 
131
        "{\n"
 
132
        "  vec2 dtc = gl_TexCoord[0].xy + texture2D(tex0, gl_TexCoord[2].xy).xy*0.1; \n"
 
133
        "  vec4 diffuse = texture2D(tex0, dtc);\n"
 
134
        "  vec4 blend = texture2D(tex1, gl_TexCoord[1].xy); \n"
 
135
        "  diffuse *= blend.a*4.0; \n"
 
136
        "  diffuse.b += 0.5 - blend.a*0.5; \n"
 
137
        "  gl_FragColor = diffuse * gl_Color;\n"
 
138
        "}\n";
 
139
 
 
140
    GLuint vs = glCreateShader(GL_VERTEX_SHADER);
 
141
    glShaderSource(vs, 1, &vertexShader, NULL);
 
142
    glCompileShader(vs);
 
143
    glGetShaderiv(vs, GL_COMPILE_STATUS, &ok);
 
144
    assert(ok);
 
145
 
 
146
    GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
 
147
    glShaderSource(fs, 1, &fragmentShader, NULL);
 
148
    glCompileShader(fs);
 
149
    glGetShaderiv(fs, GL_COMPILE_STATUS, &ok);
 
150
    assert(ok);
 
151
 
 
152
    GLuint program = glCreateProgram();
 
153
 
 
154
    glAttachShader(program, vs);
 
155
    glAttachShader(program, fs);
 
156
    glLinkProgram(program);
 
157
    glGetProgramiv(program, GL_LINK_STATUS, &ok);
 
158
    assert(ok);
 
159
 
 
160
    glUseProgram(program);
 
161
 
 
162
    // get active uniform data for 10 uniforms. XXX they include our additions from shader rewriting! XXX
 
163
 
 
164
    // gen texture, we already has one
 
165
 
 
166
    GLuint arrayBuffer;
 
167
    glGenBuffers(1, &arrayBuffer);
 
168
    glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer);
 
169
    GLubyte arrayBufferData[] = 
 
170
{0,0,0,128,0,0,0,0,0,0,128,63,0,0,0,0,0,0,128,63,0,0,0,128,0,0,0,0,0,0,128,63,171,170,170,61,0,0,128,63,0,0,0,128,0,0,0,0,0,0,128,63,171,170,42,62,0,0,128,63,0,0,0,128,0,0,0,0,0,0,128,63,0,0,128,62,0,0,128,63,0,0,0,128,0,0,0,128,0,0,128,63,171,170,170,62,0,0,128,63,0,0,0,128,0,0,0,128,0,0,128,63,85,85,213,62,0,0,128,63,0,0,0,128,0,0,0,128,0,0,128,63,0,0,0,63,0,0,128,63,0,0,0,0,0,0,0,128,0,0,128,63,85,85,21,63,0,0,128,63,0,0,0,0,0,0,0,128,0,0,128,63,171,170,42,63,0,0,128,63,0,0,0,0,0,0,0,128,0,0,128,63,0,0,64,63,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,85,85,85,63,0,0,128,63,0,0,0,0,0,0,0,0,0,0,128,63,171,170,106,63,0,0,128,63,0,0,0,128,0,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,0,128,0,0,0,63,215,179,93,63,0,0,0,0,85,85,85,63,0,0,128,190,215,179,221,62,215,179,93,63,171,170,170,61,85,85,85,63,215,179,221,190,0,0,128,62,215,179,93,63,171,170,42,62,85,85,85,63,0,0,0,191,0,48,13,36,215,179,93,63,0,0,128,62,85,85,85,63,215,179,221,190,0,0,128,190,215,179,93,63,171,170,170,62,85,85,85,63,0,0,128,190,215,179,221,190,215,179,93,63,85,85,213,62,85,85,85,63,0,76,163,165,0,0,0,191,215,179,93,63,0,0,0,63,85,85,85,63,0,0,128,62,215,179,221,190,215,179,93,63,85,85,21,63,85,85,85,63,215,179,221,62,0,0,128,190,215,179,93,63,171,170,42,63,85,85,85,63,0,0,0,63,0,200,211,164,215,179,93,63,0,0,64,63,85,85,85,63,215,179,221,62,0,0,128,62,215,179,93,63,85,85,85,63,85,85,85,63,0,0,128,62,215,179,221,62,215,179,93,63,171,170,106,63,85,85,85,63,0,0,0,128,0,0,0,63,215,179,93,63,0,0,128,63,85,85,85,63,0,0,0,128,215,179,93,63,0,0,0,63,0,0,0,0,171,170,42,63,215,179,221,190,0,0,64,63,0,0,0,63,171,170,170,61,171,170,42,63,0,0,64,191,215,179,221,62,0,0,0,63,171,170,42,62,171,170,42,63,215,179,93,191,63,139,116,36,0,0,0,63,0,0,128,62,171,170,42,63,0,0,64,191,215,179,221,190,0,0,0,63,171,170,170,62,171,170,42,63,215,179,221,190,0,0,64,191,0,0,0,63,85,85,213,62,171,170,42,63,83,107,13,166,215,179,93,191,0,0,0,63,0,0,0,63,171,170,42,63,215,179,221,62,0,0,64,191,0,0,0,63,85,85,21,63,171,170,42,63,0,0,64,63,215,179,221,190,0,0,0,63,171,170,42,63,171,170,42,63,215,179,93,63,111,104,55,165,0,0,0,63,0,0,64,63,171,170,42,63,0,0,64,63,215,179,221,62,0,0,0,63,85,85,85,63,171,170,42,63,215,179,221,62,0,0,64,63,0,0,0,63,171,170,106,63,171,170,42,63,0,0,0,128,215,179,93,63,0,0,0,63,0,0,128,63,171,170,42,63,0,0,0,128,0,0,128,63,0,166,17,38,0,0,0,0,0,0,0,63,0,0,0,191,215,179,93,63,0,166,17,38,171,170,170,61,0,0,0,63,215,179,93,191,0,0,0,63,0,166,17,38,171,170,42,62,0,0,0,63,0,0,128,191,0,48,141,36,0,166,17,38,0,0,128,62,0,0,0,63,215,179,93,191,0,0,0,191,0,166,17,38,171,170,170,62,0,0,0,63,0,0,0,191,215,179,93,191,0,166,17,38,85,85,213,62,0,0,0,63,0,76,35,166,0,0,128,191,0,166,17,38,0,0,0,63,0,0,0,63,0,0,0,63,215,179,93,191,0,166,17,38,85,85,21,63,0,0,0,63,215,179,93,63,0,0,0,191,0,166,17,38,171,170,42,63,0,0,0,63,0,0,128,63,0,200,83,165,0,166,17,38,0,0,64,63,0,0,0,63,215,179,93,63,0,0,0,63,0,166,17,38,85,85,85,63,0,0,0,63,0,0,0,63,215,179,93,63,0,166,17,38,171,170,106,63,0,0,0,63,0,0,0,128,0,0,128,63,0,166,17,38,0,0,128,63,0,0,0,63,0,0,0,128,215,179,93,63,0,0,0,191,0,0,0,0,171,170,170,62,215,179,221,190,0,0,64,63,0,0,0,191,171,170,170,61,171,170,170,62,0,0,64,191,215,179,221,62,0,0,0,191,171,170,42,62,171,170,170,62,215,179,93,191,63,139,116,36,0,0,0,191,0,0,128,62,171,170,170,62,0,0,64,191,215,179,221,190,0,0,0,191,171,170,170,62,171,170,170,62,215,179,221,190,0,0,64,191,0,0,0,191,85,85,213,62,171,170,170,62,83,107,13,166,215,179,93,191,0,0,0,191,0,0,0,63,171,170,170,62,215,179,221,62,0,0,64,191,0,0,0,191,85,85,21,63,171,170,170,62,0,0,64,63,215,179,221,190,0,0,0,191,171,170,42,63,171,170,170,62,215,179,93,63,111,104,55,165,0,0,0,191,0,0,64,63,171,170,170,62,0,0,64,63,215,179,221,62,0,0,0,191,85,85,85,63,171,170,170,62,215,179,221,62,0,0,64,63,0,0,0,191,171,170,106,63,171,170,170,62,0,0,0,128,215,179,93,63,0,0,0,191,0,0,128,63,171,170,170,62,0,0,0,128,0,0,0,63,215,179,93,191,0,0,0,0,171,170,42,62,0,0,128,190,215,179,221,62,215,179,93,191,171,170,170,61,171,170,42,62,215,179,221,190,0,0,128,62,215,179,93,191,171,170,42,62,171,170,42,62,0,0,0,191,0,48,13,36,215,179,93,191,0,0,128,62,171,170,42,62,215,179,221,190,0,0,128,190,215,179,93,191,171,170,170,62,171,170,42,62,0,0,128,190,215,179,221,190,215,179,93,191,85,85,213,62,171,170,42,62,0,76,163,165,0,0,0,191,215,179,93,191,0,0,0,63,171,170,42,62,0,0,128,62,215,179,221,190,215,179,93,191,85,85,21,63,171,170,42,62,215,179,221,62,0,0,128,190,215,179,93,191,171,170,42,63,171,170,42,62,0,0,0,63,0,200,211,164,215,179,93,191,0,0,64,63,171,170,42,62,215,179,221,62,0,0,128,62,215,179,93,191,85,85,85,63,171,170,42,62,0,0,128,62,215,179,221,62,215,179,93,191,171,170,106,63,171,170,42,62,0,0,0,128,0,0,0,63,215,179,93,191,0,0,128,63,171,170,42,62,0,0,0,128,0,166,145,38,0,0,128,191,0,0,0,0,0,0,64,37,0,166,17,166,63,69,124,38,0,0,128,191,171,170,170,61,0,0,64,37,63,69,124,166,0,166,17,38,0,0,128,191,171,170,42,62,0,0,64,37,0,166,145,166,122,167,160,11,0,0,128,191,0,0,128,62,0,0,64,37,63,69,124,166,0,166,17,166,0,0,128,191,171,170,170,62,0,0,64,37,0,166,17,166,63,69,124,166,0,0,128,191,85,85,213,62,0,0,64,37,223,207,57,141,0,166,145,166,0,0,128,191,0,0,0,63,0,0,64,37,0,166,17,38,63,69,124,166,0,0,128,191,85,85,21,63,0,0,64,37,63,69,124,38,0,166,17,166,0,0,128,191,171,170,42,63,0,0,64,37,0,166,145,38,55,251,112,140,0,0,128,191,0,0,64,63,0,0,64,37,63,69,124,38,0,166,17,38,0,0,128,191,85,85,85,63,0,0,64,37,0,166,17,38,63,69,124,38,0,0,128,191,171,170,106,63,0,0,64,37,0,0,0,128,0,166,145,38,0,0,128,191,0,0,128,63,0,0,64,37};
 
171
    glBufferData(GL_ARRAY_BUFFER, 1820, arrayBufferData, GL_STATIC_DRAW);
 
172
 
 
173
    GLuint elementBuffer;
 
174
    glGenBuffers(1, &elementBuffer);
 
175
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer);
 
176
    GLubyte elementBufferData[] = 
 
177
{0,0,13,0,1,0,1,0,13,0,14,0,1,0,14,0,2,0,2,0,14,0,15,0,2,0,15,0,3,0,3,0,15,0,16,0,3,0,16,0,4,0,4,0,16,0,17,0,4,0,17,0,5,0,5,0,17,0,18,0,5,0,18,0,6,0,6,0,18,0,19,0,6,0,19,0,7,0,7,0,19,0,20,0,7,0,20,0,8,0,8,0,20,0,21,0,8,0,21,0,9,0,9,0,21,0,22,0,9,0,22,0,10,0,10,0,22,0,23,0,10,0,23,0,11,0,11,0,23,0,24,0,11,0,24,0,12,0,12,0,24,0,25,0,24,0,37,0,25,0,25,0,37,0,38,0,23,0,36,0,24,0,24,0,36,0,37,0,22,0,35,0,23,0,23,0,35,0,36,0,21,0,34,0,22,0,22,0,34,0,35,0,20,0,33,0,21,0,21,0,33,0,34,0,19,0,32,0,20,0,20,0,32,0,33,0,18,0,31,0,19,0,19,0,31,0,32,0,17,0,30,0,18,0,18,0,30,0,31,0,16,0,29,0,17,0,17,0,29,0,30,0,15,0,28,0,16,0,16,0,28,0,29,0,14,0,27,0,15,0,15,0,27,0,28,0,13,0,26,0,14,0,14,0,26,0,27,0,26,0,39,0,27,0,27,0,39,0,40,0,27,0,40,0,28,0,28,0,40,0,41,0,28,0,41,0,29,0,29,0,41,0,42,0,29,0,42,0,30,0,30,0,42,0,43,0,30,0,43,0,31,0,31,0,43,0,44,0,31,0,44,0,32,0,32,0,44,0,45,0,32,0,45,0,33,0,33,0,45,0,46,0,33,0,46,0,34,0,34,0,46,0,47,0,34,0,47,0,35,0,35,0,47,0,48,0,35,0,48,0,36,0,36,0,48,0,49,0,36,0,49,0,37,0,37,0,49,0,50,0,37,0,50,0,38,0,38,0,50,0,51,0,50,0,63,0,51,0,51,0,63,0,64,0,49,0,62,0,50,0,50,0,62,0,63,0,48,0,61,0,49,0,49,0,61,0,62,0,47,0,60,0,48,0,48,0,60,0,61,0,46,0,59,0,47,0,47,0,59,0,60,0,45,0,58,0,46,0,46,0,58,0,59,0,44,0,57,0,45,0,45,0,57,0,58,0,43,0,56,0,44,0,44,0,56,0,57,0,42,0,55,0,43,0,43,0,55,0,56,0,41,0,54,0,42,0,42,0,54,0,55,0,40,0,53,0,41,0,41,0,53,0,54,0,39,0,52,0,40,0,40,0,52,0,53,0,52,0,65,0,53,0,53,0,65,0,66,0,53,0,66,0,54,0,54,0,66,0,67,0,54,0,67,0,55,0,55,0,67,0,68,0,55,0,68,0,56,0,56,0,68,0,69,0,56,0,69,0,57,0,57,0,69,0,70,0,57,0,70,0,58,0,58,0,70,0,71,0,58,0,71,0,59,0,59,0,71,0,72,0,59,0,72,0,60,0,60,0,72,0,73,0,60,0,73,0,61,0,61,0,73,0,74,0,61,0,74,0,62,0,62,0,74,0,75,0,62,0,75,0,63,0,63,0,75,0,76,0,63,0,76,0,64,0,64,0,76,0,77,0,76,0,89,0,77,0,77,0,89,0,90,0,75,0,88,0,76,0,76,0,88,0,89,0,74,0,87,0,75,0,75,0,87,0,88,0,73,0,86,0,74,0,74,0,86,0,87,0,72,0,85,0,73,0,73,0,85,0,86,0,71,0,84,0,72,0,72,0,84,0,85,0,70,0,83,0,71,0,71,0,83,0,84,0,69,0,82,0,70,0,70,0,82,0,83,0,68,0,81,0,69,0,69,0,81,0,82,0,67,0,80,0,68,0,68,0,80,0,81,0,66,0,79,0,67,0,67,0,79,0,80,0,65,0,78,0,66,0,66,0,78,0,79,0};
 
178
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, 864, elementBufferData, GL_STATIC_DRAW);
 
179
 
 
180
    glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer);
 
181
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer);
 
182
 
 
183
    // try to confuse the client state tracker
 
184
    glDisableClientState(GL_VERTEX_ARRAY);
 
185
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 
186
 
 
187
    glEnableClientState(GL_VERTEX_ARRAY);
 
188
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 
189
    glVertexPointer(3, GL_FLOAT, 20, 0);
 
190
    glTexCoordPointer(2, GL_FLOAT, 20, (void*)12);
 
191
 
 
192
    glPushMatrix();
 
193
    glTranslated(484.50579833984375, 589.3919067382812, 528.0055541992188);
 
194
 
 
195
    GLint texgenSLocation = glGetUniformLocation(program, "texgenS");
 
196
    assert(texgenSLocation >= 0);
 
197
    GLfloat texgenSData[4] = { 0.31012535095214844, 0.05928778275847435, 0.38769474625587463, 0.5 };
 
198
    glUniform4fv(texgenSLocation, 1, texgenSData);
 
199
 
 
200
    GLint texgenTLocation = glGetUniformLocation(program, "texgenT");
 
201
    assert(texgenTLocation >= 0 && texgenTLocation != texgenSLocation);
 
202
    GLfloat texgenTData[4] = { -0.12697559595108032, -0.4524572193622589, 0.17076200246810913, 0.5 };
 
203
    glUniform4fv(texgenTLocation, 1, texgenTData);
 
204
 
 
205
    GLint centerLocation = glGetUniformLocation(program, "center");
 
206
    if (centerLocation >= 0) {
 
207
      GLfloat centerData[4] = { 484.50579833984375, 589.3919067382812, 528.0055541992188, 0 };
 
208
      glUniform4fv(centerLocation, 1, centerData);
 
209
    }
 
210
 
 
211
    GLint animstateLocation = glGetUniformLocation(program, "animstate");
 
212
    assert(animstateLocation >= 0);
 
213
    GLfloat animstateData[4] = { 1, 55, 51, 10709 };
 
214
    glUniform4fv(animstateLocation, 1, animstateData);
 
215
 
 
216
    glRotated(1529.857142857143, 0.5773502588272095, 0.5773502588272095, 0.5773502588272095);
 
217
    glScaled(-55, 55, -55);
 
218
    glActiveTexture(GL_TEXTURE0);
 
219
    glBindTexture(GL_TEXTURE_2D, texture); // XXX this is after setting Pointers, do we miss it? Also, does it not need clientActiveTexture - should we have updated that?
 
220
    glActiveTexture(GL_TEXTURE0);
 
221
    glColor4f(1, 0.158823529411764705, 0.058823529411764705, 1);
 
222
 
 
223
    glDrawElements(GL_TRIANGLES, 432, GL_UNSIGNED_SHORT, 0);
 
224
 
 
225
    // END
 
226
 
 
227
    SDL_GL_SwapBuffers();
 
228
 
 
229
    assert(glIsTexture(texture)); // still a texture
 
230
    glDeleteTextures(1, &texture);
 
231
    assert(!glIsTexture(texture)); // but not anymore
 
232
 
 
233
    verify();
 
234
   
 
235
#if !EMSCRIPTEN
 
236
    SDL_Delay(1500);
 
237
#endif
 
238
 
 
239
    SDL_Quit();
 
240
    
 
241
    return 0;
 
242
}