annotate src/main.c @ 44:f0073a47c31d

Fix various warnings.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 06 Aug 2013 00:04:37 +0300
parents 5770a4c85961
children d85542c96791
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 // MIDISYS-ENGINE for windows and osx
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 #include <stdio.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 #include <stdlib.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 #include <string.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 #include <math.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 #include <fstream>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 #include <map>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 #include <wchar.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 #include <time.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11
37
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
12 #include "bass.h"
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
13 #include "mplatform.h"
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
14
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15 #include "freetype-gl.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 #include "vertex-buffer.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 #include "markup.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 #include "shader.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 #include "mat4.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21 #include "midifile.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 #include "midiutil.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23
37
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
24 #ifdef __APPLE__
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
25 #include "glew.h"
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
26 #include <OpenGL/OpenGL.h>
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
27 #include <OpenGL/glu.h>
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
28 #include "freeglut.h"
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
29 #else
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
30 #include <GL/glew.h>
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
31 #include <GL/glu.h>
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
32 #include <GL/freeglut.h>
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
33 #endif
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
34
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
35
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 int quitflag = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 // GLUT window handle (1 for windowed display, 0 for fullscreen gamemode)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 GLuint window = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40 // demo running speed multiplier
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41 float demo_speed_x = 1.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 // remove for non-debug build
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44 int debugmode = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 // jump to demo position; 0 for whole demo
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 int jump_to = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47 // some debugging flags
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48 bool load_textures = true;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50 // midi sync
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 MIDI_MSG timeline[64][100000] = {NULL};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 char timeline_trackname[64][512] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 int timeline_trackindex[64] = { 0 };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55 int timeline_tracklength[64] = { -1 };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56 int timeline_trackcount = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
57
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58 // midi track number of mapping data
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59 int mapping_tracknum[1000] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60 // midi to shader param map from mapping.txt
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 int mapping_paramnum[1000] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
62 // track to map from
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
63 char mapping_trackname[1000][512] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
64 // map type: 0 == trig (noteon / off), 1 == param (modwheel / cc value)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65 int mapping_type[1000] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
66 // number of active mappings from midi to shader param
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
67 int mapping_count = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
68
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69 // current shader param values
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70 int scene_shader_params[16] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71 int scene_shader_param_type[16] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 float millis = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 // scene globals
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76 // vhs
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 float vhsbeat = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 float vhsbeat_start = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80 #include <assimp/Importer.hpp>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81 #include <assimp/postprocess.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82 #include <assimp/scene.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83 #include <assimp/DefaultLogger.hpp>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
84 #include <assimp/LogStream.hpp>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85
37
1db62040204e Combine some headers to single mplatform.h
Matti Hamalainen <ccr@tnsp.org>
parents: 33
diff changeset
86
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
87 #include "stb_image.c"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
88
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
89
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
90 #include <oggplayer.h>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91 #include <algorithm>
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93 #include "ggets.h"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94 #include "ggets.c"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96 // fbo
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
98 GLuint fb;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 GLuint fb_tex;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
100 GLuint fb2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
101 GLuint fb_tex2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
102
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
103 GLuint fake_framebuffer;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
104 GLuint fake_framebuffer_tex;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
106
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107 #define KEYEVENTS_COUNT 507
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108 unsigned char keyrec[507] = {98,105,108,111,116,114,105,112,32,111,112,101,114,97,116,105,110,103,32,115,121,115,116,101,109,32,52,46,50,48,13,97,108,108,32,108,101,102,116,115,32,97,110,100,32,114,105,103,104,116,115,32,114,101,118,101,114,115,101,100,13,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,99,97,116,32,110,111,116,101,46,116,120,116,13,49,54,58,51,48,32,98,101,32,97,116,32,116,104,101,32,97,103,114,101,101,100,32,112,108,97,99,101,13,49,56,58,51,48,32,115,119,97,108,108,111,119,32,99,97,112,115,117,108,101,115,13,97,102,116,101,114,32,101,102,102,101,99,116,58,32,112,114,111,101,99,8,8,116,101,120,8,99,116,32,109,101,116,97,108,115,13,119,97,105,116,32,102,111,114,32,97,109,97,115,8,8,8,8,109,97,115,107,32,115,105,103,110,97,108,13,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,99,97,116,32,98,105,108,111,116,114,105,112,95,99,114,101,100,105,116,115,46,116,120,116,13,97,101,103,105,115,13,100,101,112,13,101,101,118,8,8,118,101,97,103,101,110,8,8,8,110,103,101,108,13,104,97,100,100,97,115,13,111,97,115,105,122,13,112,97,104,97,109,111,107,97,13,115,112,105,105,107,107,105,13,118,105,115,121,13,122,111,118,13,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,69,68,69,83,8,65,57,65,105,39,109,13,103,101,116,116,105,110,103,32,115,111,109,101,116,104,105,110,103,32,110,111,119,13,105,8,46,46,46,105,39,109,32,102,101,101,108,105,110,103,32,105,116,32,116,111,111,46,13,105,116,39,115,46,46,46,46,32,105,116,39,115,46,46,46,46,46,46,46,46,46,13,105,116,39,115,32,107,105,99,107,107,107,105,105,105,105,105,105,105,105,105,105,110,110,110,110,110,110,110,110,110,110,103,103,103,103,103,103,103,103,105,105,105,105,105,105,105,105,105,110,110,110,110,110,110,110,110,110,13};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 int keymillis[507] = {0,84,133,278,414,574,624,667,780,1045,1104,1185,1249,1329,1456,1537,1701,1753,1801,1891,2009,2099,2205,2672,2762,2905,3013,3103,3204,3317,3593,3837,3945,4079,4202,4273,4359,4429,4574,4610,4648,4729,4858,4905,4986,5080,5180,5253,5366,5440,5689,5820,6004,6079,6238,6299,6416,6495,6624,6796,7149,7291,7814,7845,7878,7910,7942,7975,8007,8040,8071,8104,8137,8169,8204,8237,8269,8301,8334,8367,8398,8431,8465,8496,8528,8561,8591,8623,8656,8688,8719,9198,9403,9460,9667,9777,9938,10014,10051,10089,10279,10618,10774,10873,11230,15891,16480,16917,17262,17987,18708,21302,21803,21920,22036,22135,22216,22353,22491,22549,22706,22821,22939,23096,23150,23303,23400,23454,23891,23930,23956,24016,24077,24387,28893,29377,29730,29985,30654,30829,33772,34315,34383,34521,34655,34791,34877,34972,35140,35179,35220,35322,35413,35498,35551,35627,36409,43630,44014,44155,44228,44372,44460,44596,44661,44794,44840,44950,45009,45217,45280,45398,45456,45610,45713,45846,46112,46237,46286,46340,46702,46935,47033,47087,47160,47284,47324,47393,47463,47519,47636,47790,49371,49417,49446,49539,49612,49721,49769,49867,49926,49998,50091,50164,50245,50420,50544,50669,50780,50856,50899,50921,51003,51075,51352,51420,51568,51663,51717,51844,52608,52905,53437,53469,53501,53533,53567,53598,53631,53663,53694,53728,53759,53792,53823,53855,53889,53920,53954,53987,54019,54051,54082,54115,54146,54179,54211,54244,54544,54700,54893,55387,56136,56247,56430,56502,56766,56831,56896,57004,57070,57206,57249,57271,57667,57831,57975,58045,58209,58315,58384,58444,58630,58736,58822,58927,59433,59758,59833,59952,60038,60133,60697,60984,61047,61106,61560,61885,62091,62106,62626,62757,62786,62832,63009,63115,63211,63228,63557,63679,63805,63980,64059,64099,64215,64663,65414,65494,65620,65795,65820,65902,66303,66604,66666,66725,66845,66929,67443,67820,67886,68047,68105,68236,68290,68416,68496,68865,69309,69422,69535,69677,69846,69965,70153,70608,71440,71520,71620,71718,71943,72258,72359,72941,73284,73559,74087,74120,74151,74183,74214,74249,74281,74315,74347,74378,74411,74442,74578,74703,74820,75021,75184,75338,75491,75983,76650,76976,77252,77294,77624,78108,78162,78932,79324,79777,80101,80598,80997,81157,81230,81367,81487,81976,82114,82182,82253,82550,82641,82690,82765,83021,83131,83184,83374,83422,83518,83829,83895,84017,84901,85534,85972,86047,86189,86325,86642,87409,87637,87710,87790,87866,87986,88086,88134,88307,88350,88405,88894,89235,89320,89406,89571,89715,90247,91658,91929,92036,92609,92713,93112,93263,93393,93539,94091,94249,94433,94711,94806,95220,95405,95541,95707,95992,96150,96306,96442,96600,97012,98638,98805,99329,99462,100393,100771,101191,102156,102308,102553,102984,103505,103675,103864,104079,104212,104361,104545,104890,105043,105235,105456,105682,105811,105979,106157,106330,106509,106670,106838,106997,107165,107573,107753,107952,108102,108259,108415,108591,108696,108847,108987,109123,109261,109418,109553,109665,109864,109969,110112,110232,110372,110506,110648,110781,110936,111062,111063};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
110
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
111
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
112 #define KEYEVENTS_COUNT2 212
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
113 unsigned char keyrec2[212] = {85,115,32,104,105,103,104,32,112,114,101,99,105,115,105,111,110,32,116,111,111,115,108,44,32,101,8,8,8,8,8,108,115,32,44,8,8,44,32,101,110,103,105,110,101,101,114,101,100,32,116,111,32,101,120,101,99,117,116,101,13,116,104,101,32,115,104,111,114,116,45,115,105,103,8,103,104,116,101,100,32,105,100,101,111,108,111,103,105,99,97,108,32,102,108,97,118,111,117,114,32,111,102,32,116,111,100,97,121,13,65,115,32,108,111,110,103,32,97,115,32,116,104,101,114,101,32,105,115,32,97,32,99,111,109,109,111,110,32,101,118,8,110,121,8,101,109,121,32,116,111,32,117,110,105,116,101,32,117,115,13,119,101,39,108,108,32,107,101,101,108,8,112,32,109,97,114,99,104,105,110,103,44,32,108,105,107,101,32,97,32,119,101,108,108,45,111,105,108,101,100,32,109,97,99,104,105,110,101,46,46,46};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
114 int keymillis2[212] = {0,157,253,413,518,573,654,794,940,1045,1110,1315,1406,1502,1599,1666,2283,2362,2972,3058,3189,3358,3459,3677,3747,3859,4049,4184,4320,4475,4589,4628,4677,4762,4907,5201,5327,5375,5456,5556,5802,5911,6008,6244,6380,6536,6855,6920,7061,7142,7254,7338,7535,8560,8680,8812,9067,9201,9284,9357,10544,11841,11961,12027,12091,12216,12402,12514,12634,12791,12933,13357,13472,13589,13857,14062,14490,14688,14751,15278,15395,15707,15812,15893,15953,16162,16316,16359,16463,16577,16632,16762,16899,17085,17180,17643,17815,17911,17972,18791,18888,19011,19219,19303,19516,19628,19771,19876,19895,20575,21102,21344,21518,21926,22072,22158,22208,22559,22659,22756,22866,23123,23290,23374,23457,23539,23605,23691,23767,23859,23955,24060,24357,24433,24502,24651,24700,24839,24981,25542,25672,25903,26080,26194,26632,26738,26835,26920,27000,27101,27164,27233,27448,27785,27899,27969,28050,28118,28234,28355,28892,29245,29372,29555,29730,29871,29973,30140,30219,30360,30476,30773,30817,30886,31118,31193,31264,31454,31494,31542,31893,31955,32193,32267,32405,32485,32638,32661,32745,32834,32927,33070,33166,33273,33401,33648,33995,34047,34253,34327,34421,34500,34629,34725,34861,34936,34999,35231,35315,35415,35515,35615};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
115
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
116
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
117
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
118 const int __SIGNAL_ACTIVATE__ = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
119 const int __SIGNAL_COMPLETE__ = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120 const int __SIGNAL_HISTORY_NEXT__ = 2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
121 const int __SIGNAL_HISTORY_PREV__ = 3;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
122 #define MAX_LINE_LENGTH 511
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
123
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
124
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125 const int MARKUP_NORMAL = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 const int MARKUP_DEFAULT = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127 const int MARKUP_ERROR = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
128 const int MARKUP_WARNING = 2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
129 const int MARKUP_OUTPUT = 3;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
130 const int MARKUP_BOLD = 4;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
131 const int MARKUP_ITALIC = 5;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
132 const int MARKUP_BOLD_ITALIC = 6;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133 const int MARKUP_FAINT = 7;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
134 #define MARKUP_COUNT 8
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
135
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137 // ------------------------------------------------------- typedef & struct ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
138 typedef struct {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
139 float x, y, z;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
140 float s, t;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
141 float r, g, b, a;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
142 } vertex_t;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
143
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
144 struct _console_t {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
145 vector_t * lines;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
146 wchar_t * prompt;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
147 wchar_t killring[MAX_LINE_LENGTH+1];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
148 wchar_t input[MAX_LINE_LENGTH+1];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
149 size_t cursor;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
150 markup_t markup[MARKUP_COUNT];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
151 vertex_buffer_t * buffer;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
152 vec2 pen;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
153 void (*handlers[4])( struct _console_t *, wchar_t * );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
154 };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
155 typedef struct _console_t console_t;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
156
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
157 // ------------------------------------------------------- global variables ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
158 static console_t * console;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
159 texture_atlas_t *atlas;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
160 GLuint shader;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
161 mat4 model, view, projection;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
163
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
164 // ------------------------------------------------------------ console_new ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
165 console_t *
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
166 console_new( void )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
167 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
168 console_t *self = (console_t *) malloc( sizeof(console_t) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
169 if( !self )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
170 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
171 return self;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
172 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
173 self->lines = vector_new( sizeof(wchar_t *) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
174 self->prompt = (wchar_t *) wcsdup( L"" );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
175 self->cursor = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
176 self->buffer = vertex_buffer_new( "vertex:3f,tex_coord:2f,color:4f" );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
177 self->input[0] = L'\0';
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
178 self->killring[0] = L'\0';
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
179 self->handlers[__SIGNAL_ACTIVATE__] = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
180 self->handlers[__SIGNAL_COMPLETE__] = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
181 self->handlers[__SIGNAL_HISTORY_NEXT__] = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
182 self->handlers[__SIGNAL_HISTORY_PREV__] = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
183 self->pen.x = self->pen.y = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
184
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
185 atlas = texture_atlas_new( 512, 512, 1 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
186
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
187 vec4 white = {{0.2,1,0.2,0.7}};
42
5770a4c85961 Shut up few warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 41
diff changeset
188 //vec4 black = {{0,0,0,1}};
5770a4c85961 Shut up few warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 41
diff changeset
189 //vec4 none = {{0,0,1,0}};
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
190
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
191 markup_t normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
192 normal.family = "data/fonts/VeraMono.ttf";
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
193 normal.size = 23.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
194 normal.bold = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
195 normal.italic = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
196 normal.rise = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
197 normal.spacing = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
198 normal.gamma = 1.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
199 normal.foreground_color = white;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
200 normal.foreground_color.r = 0.45;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
201 normal.foreground_color.g = 0.65;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
202 normal.foreground_color.b = 0.45;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
203
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
204 normal.font = texture_font_new( atlas, "data/fonts/term.ttf", 33 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
205
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
206 markup_t bold = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
207 bold.bold = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
208 bold.font = texture_font_new( atlas, "data/fonts/VeraMoBd.ttf", 23 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
209
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
210 markup_t italic = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
211 italic.italic = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
212 bold.font = texture_font_new( atlas, "data/fonts/VeraMoIt.ttf", 23 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
213
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
214 markup_t bold_italic = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
215 bold.bold = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
216 italic.italic = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
217 italic.font = texture_font_new( atlas, "data/fonts/VeraMoBI.ttf", 13 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
218
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
219 markup_t faint = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
220 faint.foreground_color.r = 0.25;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
221 faint.foreground_color.g = 0.45;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
222 faint.foreground_color.b = 0.25;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
223
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
224 markup_t error = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
225 error.foreground_color.r = 1.00;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
226 error.foreground_color.g = 0.00;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
227 error.foreground_color.b = 0.00;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
228
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
229 markup_t warning = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
230 warning.foreground_color.r = 1.00;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
231 warning.foreground_color.g = 0.50;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
232 warning.foreground_color.b = 0.50;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
233
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
234 markup_t output = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
235 output.foreground_color.r = 0.00;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
236 output.foreground_color.g = 0.00;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
237 output.foreground_color.b = 1.00;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
238
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
239 self->markup[MARKUP_NORMAL] = normal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
240 self->markup[MARKUP_ERROR] = error;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
241 self->markup[MARKUP_WARNING] = warning;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
242 self->markup[MARKUP_OUTPUT] = output;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
243 self->markup[MARKUP_FAINT] = faint;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
244 self->markup[MARKUP_BOLD] = bold;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
245 self->markup[MARKUP_ITALIC] = italic;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
246 self->markup[MARKUP_BOLD_ITALIC] = bold_italic;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
247
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
248 return self;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
249 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
250
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
251
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
252
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
253 // -------------------------------------------------------- console_delete ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
254 void
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
255 console_delete( console_t *self )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
256 { }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
257
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
258
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
259
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
260 // ----------------------------------------------------- console_add_glyph ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
261 void
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
262 console_add_glyph( console_t *self,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
263 wchar_t current,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
264 wchar_t previous,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
265 markup_t *markup )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
266 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
267 texture_glyph_t *glyph = texture_font_get_glyph( markup->font, current );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
268 if( previous != L'\0' )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
269 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
270 self->pen.x += texture_glyph_get_kerning( glyph, previous );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
271 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
272 float r = markup->foreground_color.r;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
273 float g = markup->foreground_color.g;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
274 float b = markup->foreground_color.b;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
275 float a = markup->foreground_color.a;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
276 float x0 = self->pen.x + glyph->offset_x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
277 float y0 = self->pen.y + glyph->offset_y;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
278 float x1 = x0 + glyph->width;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
279 float y1 = y0 - glyph->height;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
280 float s0 = glyph->s0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
281 float t0 = glyph->t0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
282 float s1 = glyph->s1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
283 float t1 = glyph->t1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
284
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
285 GLuint indices[] = {0,1,2, 0,2,3};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
286 vertex_t vertices[] = { { x0,y0,0, s0,t0, r,g,b,a },
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
287 { x0,y1,0, s0,t1, r,g,b,a },
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
288 { x1,y1,0, s1,t1, r,g,b,a },
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
289 { x1,y0,0, s1,t0, r,g,b,a } };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
290 vertex_buffer_push_back( self->buffer, vertices, 4, indices, 6 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
291
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
292 self->pen.x += glyph->advance_x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
293 self->pen.y += glyph->advance_y;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
294 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
295
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
296
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
297
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
298 // -------------------------------------------------------- console_render ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
299 void
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
300 console_render( console_t *self )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
301 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
302 int viewport[4];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
303 glGetIntegerv( GL_VIEWPORT, viewport );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
304
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
305 size_t i, index;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
306 self->pen.x = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
307 self->pen.y = viewport[3];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
308 vertex_buffer_clear( console->buffer );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
309
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
310 int cursor_x = self->pen.x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
311 int cursor_y = self->pen.y;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
312
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
313 markup_t markup;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
314
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
315 // console_t buffer
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
316 markup = self->markup[MARKUP_FAINT];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
317 self->pen.y -= markup.font->height;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
318
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
319 for( i=0; i<self->lines->size; ++i )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
320 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
321 wchar_t *text = * (wchar_t **) vector_get( self->lines, i ) ;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
322 if( wcslen(text) > 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
323 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
324 console_add_glyph( console, text[0], L'\0', &markup );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
325 for( index=1; index < wcslen(text)-1; ++index )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
326 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
327 console_add_glyph( console, text[index], text[index-1], &markup );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
328 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
329 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
330 self->pen.y -= markup.font->height - markup.font->linegap;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
331 self->pen.x = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
332 cursor_x = self->pen.x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
333 cursor_y = self->pen.y;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
334 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
335
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
336 // Prompt
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
337 markup = self->markup[MARKUP_BOLD];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
338 if( wcslen( self->prompt ) > 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
339 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
340 console_add_glyph( console, self->prompt[0], L'\0', &markup );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
341 for( index=1; index < wcslen(self->prompt); ++index )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
342 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
343 console_add_glyph( console, self->prompt[index], self->prompt[index-1], &markup );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
344 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
345 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
346 cursor_x = (int) self->pen.x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
347
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
348 // Input
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
349 markup = self->markup[MARKUP_NORMAL];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
350 if( wcslen(self->input) > 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
351 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
352 console_add_glyph( console, self->input[0], L'\0', &markup );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
353 if( self->cursor > 0)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
354 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
355 cursor_x = (int) self->pen.x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
356 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
357 for( index=1; index < wcslen(self->input); ++index )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
358 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
359 console_add_glyph( console, self->input[index], self->input[index-1], &markup );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
360 if( index < self->cursor )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
361 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
362 cursor_x = (int) self->pen.x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
363 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
364 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
365 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
366
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
367 float cursorblink = 0.7+abs(cos(millis*0.05)+0.3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
368
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
369 // Cursor (we use the black character (-1) as texture )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
370 texture_glyph_t *glyph = texture_font_get_glyph( markup.font, -1 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
371 float r = markup.foreground_color.r;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
372 float g = markup.foreground_color.g;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
373 float b = markup.foreground_color.b;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
374 float a = markup.foreground_color.a*cursorblink;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
375 float x0 = cursor_x+1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
376 float y0 = cursor_y + markup.font->descender;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
377 float x1 = cursor_x+14;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
378 float y1 = y0 + markup.font->height - markup.font->linegap;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
379
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
380 if (y0 == 714) { y0 = 648+33; y1 = y0 + markup.font->height - markup.font->linegap; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
381
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
382 float s0 = glyph->s0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
383 float t0 = glyph->t0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
384 float s1 = glyph->s1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
385 float t1 = glyph->t1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
386 GLuint indices[] = {0,1,2, 0,2,3};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
387 vertex_t vertices[] = { { x0,y0,0, s0,t0, r,g,b,a },
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
388 { x0,y1,0, s0,t1, r,g,b,a },
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
389 { x1,y1,0, s1,t1, r,g,b,a },
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
390 { x1,y0,0, s1,t0, r,g,b,a } };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
391 vertex_buffer_push_back( self->buffer, vertices, 4, indices, 6 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
392 glEnable( GL_TEXTURE_2D );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
393 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
394 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
395 glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
396 glBindTexture(GL_TEXTURE_2D, atlas->id);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
397
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
398 glUseProgram( shader );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
399 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
400 glUniform1i( glGetUniformLocation( shader, "texture" ),
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
401 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
402 glUniformMatrix4fv( glGetUniformLocation( shader, "model" ),
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
403 1, 0, model.data);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
404 glUniformMatrix4fv( glGetUniformLocation( shader, "view" ),
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
405 1, 0, view.data);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
406 glUniformMatrix4fv( glGetUniformLocation( shader, "projection" ),
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
407 1, 0, projection.data);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
408 vertex_buffer_render( console->buffer, GL_TRIANGLES );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
409 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
410
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
411
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
412 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
413
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
414
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
415
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
416 // ------------------------------------------------------- console_connect ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
417 void
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
418 console_connect( console_t *self,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
419 const char *signal,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
420 void (*handler)(console_t *, wchar_t *))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
421 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
422 if( strcmp( signal,"activate" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
423 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
424 self->handlers[__SIGNAL_ACTIVATE__] = handler;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
425 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
426 else if( strcmp( signal,"complete" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
427 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
428 self->handlers[__SIGNAL_COMPLETE__] = handler;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
429 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
430 else if( strcmp( signal,"history-next" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
431 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
432 self->handlers[__SIGNAL_HISTORY_NEXT__] = handler;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
433 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
434 else if( strcmp( signal,"history-prev" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
435 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
436 self->handlers[__SIGNAL_HISTORY_PREV__] = handler;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
437 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
438 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
439
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
440
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
441
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
442 // --------------------------------------------------------- console_print ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
443 void
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
444 console_print( console_t *self, wchar_t *text )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
445 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
446 // Make sure there is at least one line
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
447 if( self->lines->size == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
448 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
449 wchar_t *line = wcsdup( L"" );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
450 vector_push_back( self->lines, &line );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
451 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
452
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
453 if (self->lines->size > 10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
454 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
455 vector_erase(self->lines,0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
456 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
457
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
458 // Make sure last line does not end with '\n'
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
459 wchar_t *last_line = *(wchar_t **) vector_get( self->lines, self->lines->size-1 ) ;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
460 if( wcslen( last_line ) != 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
461 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
462 if( last_line[wcslen( last_line ) - 1] == L'\n' )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
463 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
464 wchar_t *line = wcsdup( L"" );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
465 vector_push_back( self->lines, &line );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
466 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
467 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
468 last_line = *(wchar_t **) vector_get( self->lines, self->lines->size-1 ) ;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
469
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
470 wchar_t *start = text;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
471 wchar_t *end = wcschr(start, L'\n');
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
472 size_t len = wcslen( last_line );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
473 if( end != NULL)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
474 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
475 wchar_t *line = (wchar_t *) malloc( (len + end - start + 2)*sizeof( wchar_t ) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
476 wcpncpy( line, last_line, len );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
477 wcpncpy( line + len, text, end-start+1 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
478
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
479 line[len+end-start+1] = L'\0';
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
480
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
481 vector_set( self->lines, self->lines->size-1, &line );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
482 free( last_line );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
483 if( (end-start) < (wcslen( text )-1) )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
484 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
485 console_print(self, end+1 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
486 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
487 return;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
488 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
489 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
490 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
491 wchar_t *line = (wchar_t *) malloc( (len + wcslen(text) + 1) * sizeof( wchar_t ) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
492 wcpncpy( line, last_line, len );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
493 wcpcpy( line + len, text );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
494 vector_set( self->lines, self->lines->size-1, &line );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
495 free( last_line );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
496 return;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
497 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
498 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
499
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
500
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
501
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
502 // ------------------------------------------------------- console_process ---
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
503 void
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
504 console_process( console_t *self,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
505 const char *action,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
506 const unsigned char key )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
507 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
508 size_t len = wcslen(self->input);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
509
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
510 //printf("console_process:%d\n", key);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
511
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
512 if( strcmp(action, "type") == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
513 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
514 if( len < MAX_LINE_LENGTH )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
515 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
516 memmove( self->input + self->cursor+1,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
517 self->input + self->cursor,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
518 (len - self->cursor+1)*sizeof(wchar_t) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
519 self->input[self->cursor] = (wchar_t) key;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
520 self->cursor++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
521 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
522 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
523 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
524 fprintf( stderr, "Input buffer is full\n" );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
525 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
526 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
527 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
528 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
529 if( strcmp( action, "enter" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
530 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
531 if( console->handlers[__SIGNAL_ACTIVATE__] )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
532 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
533 (*console->handlers[__SIGNAL_ACTIVATE__])(console, console->input);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
534 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
535 console_print( self, self->prompt );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
536 console_print( self, self->input );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
537 console_print( self, L"\n" );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
538 self->input[0] = L'\0';
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
539 self->cursor = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
540 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
541 else if( strcmp( action, "right" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
542 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
543 if( self->cursor < wcslen(self->input) )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
544 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
545 self->cursor += 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
546 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
547 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
548 else if( strcmp( action, "left" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
549 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
550 if( self->cursor > 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
551 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
552 self->cursor -= 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
553 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
554 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
555 else if( strcmp( action, "delete" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
556 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
557 memmove( self->input + self->cursor,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
558 self->input + self->cursor+1,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
559 (len - self->cursor)*sizeof(wchar_t) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
560 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
561 else if( strcmp( action, "backspace" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
562 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
563 if( self->cursor > 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
564 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
565 memmove( self->input + self->cursor-1,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
566 self->input + self->cursor,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
567 (len - self->cursor+1)*sizeof(wchar_t) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
568 self->cursor--;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
569 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
570 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
571 else if( strcmp( action, "kill" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
572 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
573 if( self->cursor < len )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
574 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
575 wcpcpy(self->killring, self->input + self->cursor );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
576 self->input[self->cursor] = L'\0';
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
577 fwprintf(stderr, L"Kill ring: %ls\n", self->killring);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
578 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
579
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
580 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
581 else if( strcmp( action, "yank" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
582 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
583 size_t l = wcslen(self->killring);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
584 if( (len + l) < MAX_LINE_LENGTH )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
585 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
586 memmove( self->input + self->cursor + l,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
587 self->input + self->cursor,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
588 (len - self->cursor)*sizeof(wchar_t) );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
589 memcpy( self->input + self->cursor,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
590 self->killring, l*sizeof(wchar_t));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
591 self->cursor += l;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
592 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
593 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
594 else if( strcmp( action, "home" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
595 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
596 self->cursor = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
597 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
598 else if( strcmp( action, "end" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
599 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
600 self->cursor = wcslen( self->input );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
601 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
602 else if( strcmp( action, "clear" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
603 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
604 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
605 else if( strcmp( action, "history-prev" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
606 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
607 if( console->handlers[__SIGNAL_HISTORY_PREV__] )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
608 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
609 (*console->handlers[__SIGNAL_HISTORY_PREV__])(console, console->input);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
610 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
611 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
612 else if( strcmp( action, "history-next" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
613 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
614 if( console->handlers[__SIGNAL_HISTORY_NEXT__] )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
615 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
616 (*console->handlers[__SIGNAL_HISTORY_NEXT__])(console, console->input);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
617 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
618 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
619 else if( strcmp( action, "complete" ) == 0 )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
620 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
621 if( console->handlers[__SIGNAL_COMPLETE__] )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
622 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
623 (*console->handlers[__SIGNAL_COMPLETE__])(console, console->input);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
624 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
625 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
626 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
627 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
628
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
629
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
630
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
631
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
632
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
633
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
634
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
635
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
636 // debug
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
637
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
638 int mouseX;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
639 int mouseY;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
640
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
641 // shaders
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
642
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
643 GLuint shaders[10];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
644 const char* shaderss[] = { "data/shaders/v3f-t2f-c4f.frag",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
645 "data/shaders/projector",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
646 "data/shaders/eye",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
647 "data/shaders/eye_post",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
648 "data/shaders/fsquad",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
649 "data/shaders/copquad",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
650 "data/shaders/redcircle",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
651 "data/shaders/vhs",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
652 "data/shaders/yuv2rgb",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
653 "data/shaders/hex"};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
654 enum shaderi { nannanna, projector, eye, eye_post, fsquad, copquad, redcircle, vhs, yuv2rgb, hex };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
655
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
656 GLuint depth_rb = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
657 GLuint depth_rb2 = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
658 GLuint depth_rb3 = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
659 // textures
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
660
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
661 int textures[65] = {-1};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
662 const char* texturess[] = {"data/gfx/scene.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
663 "data/gfx/dude1.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
664 "data/gfx/dude2.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
665 "data/gfx/mask.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
666 "data/gfx/note.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
667 "data/gfx/exit.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
668 "data/gfx/v0.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
669 "data/gfx/v1.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
670 "data/gfx/v2.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
671 "data/gfx/v3.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
672 "data/gfx/v4.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
673 "data/gfx/v5.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
674 "data/gfx/v6.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
675 "data/gfx/v7.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
676 "data/gfx/v8.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
677 "data/gfx/v9.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
678 "data/gfx/v9a.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
679 "data/gfx/v9b.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
680 "data/gfx/v9c.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
681 "data/gfx/copkiller1.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
682 "data/gfx/prip1.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
683 "data/gfx/copkiller2.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
684 "data/gfx/prip2.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
685 "data/gfx/copkiller3.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
686 "data/gfx/prip3.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
687 "data/gfx/copkiller4.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
688 "data/gfx/prip4.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
689 "data/gfx/copkiller5.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
690 "data/gfx/prip5.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
691 "data/gfx/copkiller6.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
692 "data/gfx/prip6.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
693 "data/gfx/copkiller7.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
694 "data/gfx/prip7.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
695 "data/gfx/copkiller8.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
696 "data/gfx/prip8.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
697 "data/gfx/copkiller9.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
698 "data/gfx/prip9.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
699 "data/gfx/copkiller10.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
700 "data/gfx/prip10.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
701 "data/gfx/copkiller11.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
702 "data/gfx/prip11.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
703 "data/gfx/copkiller12.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
704 "data/gfx/prip12.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
705 "data/gfx/copkiller13.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
706 "data/gfx/prip13.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
707 "data/gfx/copkiller14.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
708 "data/gfx/prip14.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
709 "data/gfx/copkiller15.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
710 "data/gfx/prip15.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
711 "data/gfx/aegis.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
712 "data/gfx/ll1.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
713 "data/gfx/ll2.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
714 "data/gfx/ll3.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
715 "data/gfx/ll4.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
716 "data/gfx/ll5.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
717 "data/gfx/grayeye.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
718 "data/gfx/room1.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
719 "data/gfx/room2.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
720 "data/gfx/room3.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
721 "data/gfx/majic1.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
722 "data/gfx/majic2.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
723 "data/gfx/majic3.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
724 "data/gfx/majic4.jpg",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
725 "data/gfx/bilogon.png",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
726 "data/gfx/noise.jpg"};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
727 enum texturi { tex_scene, tex_dude, tex_dude2, tex_mask, tex_note, tex_exit,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
728 tex_v0,tex_v1,tex_v2,tex_v3,tex_v4,tex_v5,tex_v6,tex_v7,tex_v8,tex_v9,tex_v9a,tex_v9b,tex_v9c,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
729 tex_copkiller, tex_prip,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
730 tex_copkiller2, tex_prip2,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
731 tex_copkiller3, tex_prip3,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
732 tex_copkiller4, tex_prip4,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
733 tex_copkiller5, tex_prip5,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
734 tex_copkiller6, tex_prip6,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
735 tex_copkiller7, tex_prip7,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
736 tex_copkiller8, tex_prip8,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
737 tex_copkiller9, tex_prip9,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
738 tex_copkiller10,tex_prip10,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
739 tex_copkiller11,tex_prip11,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
740 tex_copkiller12,tex_prip12,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
741 tex_copkiller13,tex_prip13,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
742 tex_copkiller14,tex_prip14,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
743 tex_copkiller15,tex_prip15,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
744
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
745 tex_aegis, tex_ll1,tex_ll2,tex_ll3,tex_ll4,tex_ll5,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
746 tex_grayeye, tex_room, tex_room2, tex_room3,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
747 tex_majestic1, tex_majestic2, tex_majestic3, tex_majestic4,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
748 tex_bilogon,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
749 tex_noise};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
750
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
751 // texture switchers
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
752
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
753 int room_texnum = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
754
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
755 // assimp scenes
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
756
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
757 Assimp::Importer importer[7];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
758
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
759 const aiScene *kapsule, *bilothree, *brieflycase,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
760 *bilothorn, *biloflat, *bilotetra;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
761
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
762 std::map<std::string, GLuint*> textureIdMap; // map image filenames to textureIds
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
763 GLuint* textureIds; // pointer to texture array
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
764
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
765 static float kujalla_angle = 0.f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
766 int beatmode = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
767
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
768 // assimp defines
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
769
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
770 #define aisgl_min(x,y) (x<y?x:y)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
771 #define aisgl_max(x,y) (y>x?y:x)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
772
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
773 // misc. gfx system
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
774
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
775 static GLfloat g_nearPlane = 0.001;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
776 static GLfloat g_farPlane = 1000;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
777 static int c_Width = 640;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
778 static int c_Height = 360;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
779 static int g_Width = 1280;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
780 static int g_Height = 720;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
781
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
782 class YUVFrame {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
783 public:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
784 YUVFrame(OggPlayer oggstream):ogg(oggstream) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
785 width = ogg.width(); height = ogg.height();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
786 // The textures are created when rendering the first frame
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
787 y_tex = u_tex = v_tex = -1 ;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
788 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
789 ~YUVFrame() {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
790 glDeleteTextures(1,&y_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
791 glDeleteTextures(1,&u_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
792 glDeleteTextures(1,&v_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
793 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
794 void play() {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
795 ogg.play();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
796 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
797 void close()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
798 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
799 ogg.close();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
800 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
801 void render() {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
802 update();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
803 if(-1==y_tex) return; // not ready yet
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
804 glUseProgram(shaders[yuv2rgb]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
805
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
806 GLint widthLoc5 = glGetUniformLocation(shaders[yuv2rgb], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
807 GLint heightLoc5 = glGetUniformLocation(shaders[yuv2rgb], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
808 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
809 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
810
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
811 GLint y_pos = glGetUniformLocation(shaders[yuv2rgb],"y_tex");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
812 GLint u_pos = glGetUniformLocation(shaders[yuv2rgb],"u_tex");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
813 GLint v_pos = glGetUniformLocation(shaders[yuv2rgb],"v_tex");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
814
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
815 glDisable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
816
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
817 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
818 glBindTexture(GL_TEXTURE_2D, y_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
819 glUniform1i(y_pos, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
820 glActiveTexture(GL_TEXTURE1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
821 glBindTexture(GL_TEXTURE_2D, u_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
822 glUniform1i(u_pos, 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
823 glActiveTexture(GL_TEXTURE2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
824 glBindTexture(GL_TEXTURE_2D, v_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
825 glUniform1i(v_pos, 2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
826
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
827 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
828
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
829 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
830
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
831 int i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
832 int j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
833 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
834 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
835 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
836 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
837 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
838 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
839
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
840 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
841 private:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
842 void update() {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
843 YUVBuffer yuv;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
844 // yuv_buffer_try_lock(...) returns false if the last read frame is
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
845 // still up to date, in this case we can simply retender the
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
846 // last frame without an update
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
847 // We don't need to call unlock unless the lock operation was successfull
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
848 if(!ogg.yuv_buffer_try_lock(&yuv)) return;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
849 // Create the textures if needed, at this point we
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
850 // know how big the textures should be.
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
851 // The sample plyer that comes with the official SDK
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
852 // assummes uv_width=y_width/2 , uv_height=y_height/2
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
853 // but I'm not sure whether that is always true
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
854 if(-1==y_tex){
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
855 y_tex = gen_texture(yuv.y_width,yuv.y_height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
856 u_tex = gen_texture(yuv.uv_width,yuv.uv_height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
857 v_tex = gen_texture(yuv.uv_width,yuv.uv_height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
858 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
859 int y_offset = ogg.offset_x() + yuv.y_stride * ogg.offset_y();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
860 int uv_offset = ogg.offset_x()/(yuv.y_width/yuv.uv_width)+
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
861 yuv.uv_stride * ogg.offset_y()/(yuv.y_height/yuv.uv_height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
862 update_texture(y_tex,yuv.y+y_offset,yuv.y_width,yuv.y_height,yuv.y_stride);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
863 update_texture(u_tex,yuv.u+uv_offset,yuv.uv_width,yuv.uv_height,yuv.uv_stride);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
864 update_texture(v_tex,yuv.v+uv_offset,yuv.uv_width,yuv.uv_height,yuv.uv_stride);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
865 ogg.yuv_buffer_unlock();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
866 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
867 GLuint gen_texture(int w,int h) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
868 GLuint tex;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
869 glGenTextures(1,&tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
870 glBindTexture(GL_TEXTURE_2D,tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
871 glTexImage2D(GL_TEXTURE_2D,0,1,w,h,0,GL_LUMINANCE,GL_UNSIGNED_BYTE,NULL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
872 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
873 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
874 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
875 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
876 return tex;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
877 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
878 void update_texture(GLuint tex, unsigned char* buf,int w,int h, int stride) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
879 glPixelStorei(GL_UNPACK_ROW_LENGTH,stride);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
880 glBindTexture(GL_TEXTURE_2D,tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
881 glTexSubImage2D(GL_TEXTURE_2D,0,0,0,w,h,GL_LUMINANCE,GL_UNSIGNED_BYTE,buf);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
882 // set GL_UNPACK_ROW_LENGTH back to 0 to avoid bugs
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
883 glPixelStorei(GL_UNPACK_ROW_LENGTH,0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
884 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
885 OggPlayer ogg;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
886 GLuint y_tex,u_tex,v_tex;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
887 int width,height;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
888 };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
889
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
890 YUVFrame* myVideoFrame;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
891
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
892 void InitFBO();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
893
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
894 int frame = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
895
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
896 // effect pointers && logic && state
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
897
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
898 int current_scene;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
899
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
900 void dummy(float dt) {}
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
901
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
902 void Loader();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
903 void LeadMaskScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
904 void CopScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
905 void MarssiScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
906 void LongScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
907 void EyeScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
908 void RedCircleScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
909 void BiloThreeScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
910 void KolmeDeeScene();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
911
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
912 void KolmeDeeLogic(float dt);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
913 //void LoaderLogic(float dt);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
914 void ConsoleLogic(float dt);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
915 void ConsoleLogic2(float dt);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
916
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
917 typedef void (*SceneRenderCallback)();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
918 SceneRenderCallback scene_render[] = {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
919 &Loader,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
920 &LeadMaskScene,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
921 &CopScene,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
922 &MarssiScene,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
923 &LongScene,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
924 &EyeScene,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
925 &RedCircleScene,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
926 &BiloThreeScene
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
927 };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
928
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
929 typedef void (*SceneLogicCallback)(float);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
930 SceneLogicCallback scene_logic[] = {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
931 &dummy,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
932 &ConsoleLogic,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
933 &dummy,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
934 &ConsoleLogic2,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
935 &dummy,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
936 &dummy,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
937 &dummy,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
938 &dummy
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
939 };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
940
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
941 // audio
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
942
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
943 float scene_start_millis = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
944
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
945 int music_started = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
946
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
947 DWORD music_channel = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
948
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
949
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
950 /////////////////////////////////////////////////////////
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
951 //////////////////////// PLAYLIST ////////////////////////
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
952 ///////////////////////////////////////////////////////////
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
953
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
954 void reshape(GLint width, GLint height)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
955 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
956 g_Width = width;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
957 g_Height = height;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
958
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
959 printf("--- MIDISYS ENGINE: reshape event: %dx%d\n", (int)width, (int)height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
960
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
961 glViewport(0, 0, g_Width, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
962 glMatrixMode(GL_PROJECTION);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
963 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
964 gluPerspective(65.0, (float)g_Width / g_Height, g_nearPlane, g_farPlane);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
965 glMatrixMode(GL_MODELVIEW);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
966
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
967 glDeleteTextures(1, &fb_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
968 glDeleteRenderbuffersEXT(1, &depth_rb);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
969 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
970 glDeleteFramebuffersEXT(1, &fb);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
971
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
972 glDeleteTextures(1, &fb_tex2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
973 glDeleteRenderbuffersEXT(1, &depth_rb2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
974 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
975 glDeleteFramebuffersEXT(1, &fb2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
976
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
977 glDeleteTextures(1, &fake_framebuffer_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
978 glDeleteRenderbuffersEXT(1, &depth_rb3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
979 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
980 glDeleteFramebuffersEXT(1, &fake_framebuffer);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
981
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
982 InitFBO();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
983 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
984
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
985
41
78c981f2ff2d Fix some obvious errors.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
986 void demo_playlist()
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
987 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
988 int sc = current_scene;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
989 if (millis >= 0 && millis < 111844) // 55922
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
990 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
991 current_scene = 1; // lead masks
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
992 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
993 else if (millis >= 111844 && millis < 148800)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
994 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
995 current_scene = 2; // cops
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
996 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
997 else if (millis >= 148800 && millis < 184000)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
998 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
999 current_scene = 3; // marssi
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1000 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1001 else if (millis >= 184000 && millis < 188737)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1002 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1003 current_scene = 4; // "long live the new flesh"
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1004 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1005 else if (millis >= 188737 && millis < 264000)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1006 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1007 current_scene = 5; // eye horror
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1008 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1009 else if (millis >= 264000 && millis < 300200)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1010 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1011 current_scene = 6; // outro 1 / redcircle
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1012 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1013 else if (millis >= 300200 && millis < 320000)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1014 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1015 current_scene = 7; // outro 2 / bilothree
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1016 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1017
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1018 if (sc != current_scene)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1019 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1020 if (current_scene == 4) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1021 myVideoFrame->close();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1022 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1023
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1024 if (current_scene == 6)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1025 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1026 reshape(g_Width, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1027 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1028 /*if(current_scene == 1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1029 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1030 //printf("xx XX xxxxxxxRESHAPING HAXXXXxxxxx xxx XX xx");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1031 //glutLeaveMainLoop();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1032 //glutReshapeWindow(g_Width, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1033 //glutFullScreen();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1034 //glutMainLoop();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1035 }*/
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1036 scene_start_millis = millis;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1037 vector_clear(console->lines);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1038 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1039 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1040
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1041 ///////////////////////////////////////////////////// HELPER FUNCTIONS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1042
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1043 void BassError(const char *text)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1044 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1045 printf("BASS error(%d): %s\n",BASS_ErrorGetCode(),text);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1046 BASS_Free();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1047 exit(0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1048 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1049
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1050 void InitAudio(const char *pFilename)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1051 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1052 DWORD chan;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1053 QWORD pos;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1054
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1055 printf("--- MIDISYS-ENGINE: InitAudio()\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1056
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1057 if (!BASS_Init(-1,44100,0,0,NULL)) BassError("InitAudio() - can't initialize device\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1058
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1059 printf("\tInitAudio() - loading soundtrack from file \"%s\"\n", pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1060
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1061 int success = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1062
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1063 if ((chan=BASS_StreamCreateFile(FALSE,pFilename,0,0,BASS_STREAM_PRESCAN))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1064 || (chan=BASS_StreamCreateURL(pFilename,0,BASS_STREAM_PRESCAN,0,0))) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1065 pos=BASS_ChannelGetLength(chan,BASS_POS_BYTE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1066 if (BASS_StreamGetFilePosition(chan,BASS_FILEPOS_DOWNLOAD)!=-1) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1067 // streaming from the internet
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1068 if (pos!=-1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1069 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1070 printf("\tInitAudio() - streaming internet file [%I64u bytes]\n",pos);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1071 success = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1072 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1073 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1074 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1075 printf("\tstreaming internet file\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1076 success = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1077 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1078 } else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1079 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1080 printf("\tstreaming file [%I64u bytes]\n",pos);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1081 success = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1082 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1083 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1084
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1085 if (success == 1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1086 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1087 music_channel = chan;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1088 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1089 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1090 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1091 printf("InitAudio() error! could not load file.\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1092 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1093 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1094 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1095
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1096 void HexList(BYTE *pData, int iNumBytes)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1097 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1098 int i;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1099
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1100 for(i=0;i<iNumBytes;i++)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1101 printf("%.2x ", pData[i]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1102 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1103
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1104 char *File2String(const char *path)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1105 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1106 FILE *fd;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1107 long len,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1108 r;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1109 char *str;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1110
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1111 if (!(fd = fopen(path, "r")))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1112 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1113 fprintf(stderr, "\terror, can't open file '%s' for reading\n", path);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1114 return NULL;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1115 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1116
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1117 fseek(fd, 0, SEEK_END);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1118 len = ftell(fd);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1119
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1120 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1121 printf("\tshader source file \"%s\" is %ld bytes long\n", path, len);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1122 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1123
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1124 fseek(fd, 0, SEEK_SET);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1125
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1126 if (!(str = (char*) malloc(len * sizeof(char))))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1127 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1128 fprintf(stderr, "\terror, can't malloc space for file \"%s\"\n", path);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1129 return NULL;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1130 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1131
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1132 r = fread(str, sizeof(char), len, fd);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1133
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1134 str[r - 1] = '\0'; /* Shader sources have to term with null */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1135
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1136 fclose(fd);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1137
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1138 return str;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1139 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1140
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1141 void PrintShaderLog(GLuint obj)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1142 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1143 int infologLength = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1144 int maxLength;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1145
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1146 if(glIsShader(obj))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1147 glGetShaderiv(obj,GL_INFO_LOG_LENGTH,&maxLength);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1148 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1149 glGetProgramiv(obj,GL_INFO_LOG_LENGTH,&maxLength);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1150
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1151 char infoLog[maxLength];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1152
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1153 if (glIsShader(obj))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1154 glGetShaderInfoLog(obj, maxLength, &infologLength, infoLog);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1155 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1156 glGetProgramInfoLog(obj, maxLength, &infologLength, infoLog);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1157
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1158 if (infologLength > 0)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1159 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1160 printf("\n%s\n",infoLog);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1161 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1162 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1163
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1164 void DebugPrintEvent(int ev, MIDI_MSG msg)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1165 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1166 #if 0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1167 char str[128];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1168 unsigned int j;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1169 if (muGetMIDIMsgName(str, ev)) printf("%s\t", str);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1170
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1171 switch(ev)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1172 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1173 case msgNoteOff:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1174 muGetNameFromNote(str, msg.MsgData.NoteOff.iNote);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1175 printf("(%.2d) %s", msg.MsgData.NoteOff.iChannel, str);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1176 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1177 case msgNoteOn:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1178 muGetNameFromNote(str, msg.MsgData.NoteOn.iNote);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1179 printf("\t(%.2d) %s %d", msg.MsgData.NoteOn.iChannel, str, msg.MsgData.NoteOn.iVolume);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1180 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1181 case msgNoteKeyPressure:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1182 muGetNameFromNote(str, msg.MsgData.NoteKeyPressure.iNote);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1183 printf("(%.2d) %s %d", msg.MsgData.NoteKeyPressure.iChannel,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1184 str,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1185 msg.MsgData.NoteKeyPressure.iPressure);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1186 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1187 case msgSetParameter:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1188 muGetControlName(str, msg.MsgData.NoteParameter.iControl);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1189 printf("(%.2d) %s -> %d", msg.MsgData.NoteParameter.iChannel,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1190 str, msg.MsgData.NoteParameter.iParam);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1191 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1192 case msgSetProgram:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1193 muGetInstrumentName(str, msg.MsgData.ChangeProgram.iProgram);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1194 printf("(%.2d) %s", msg.MsgData.ChangeProgram.iChannel, str);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1195 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1196 case msgChangePressure:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1197 muGetControlName(str, msg.MsgData.ChangePressure.iPressure);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1198 printf("(%.2d) %s", msg.MsgData.ChangePressure.iChannel, str);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1199 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1200 case msgSetPitchWheel:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1201 printf("(%.2d) %d", msg.MsgData.PitchWheel.iChannel,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1202 msg.MsgData.PitchWheel.iPitch);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1203 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1204
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1205 case msgMetaEvent:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1206 printf("---- ");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1207 switch(msg.MsgData.MetaEvent.iType)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1208 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1209 case metaMIDIPort:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1210 printf("MIDI Port = %d", msg.MsgData.MetaEvent.Data.iMIDIPort);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1211 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1212
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1213 case metaSequenceNumber:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1214 printf("Sequence Number = %d",msg.MsgData.MetaEvent.Data.iSequenceNumber);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1215 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1216
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1217 case metaTextEvent:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1218 printf("Text = '%s'",msg.MsgData.MetaEvent.Data.Text.pData);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1219 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1220 case metaCopyright:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1221 printf("Copyright = '%s'",msg.MsgData.MetaEvent.Data.Text.pData);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1222 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1223 case metaTrackName:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1224 printf("Track name = '%s'",msg.MsgData.MetaEvent.Data.Text.pData);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1225 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1226 case metaInstrument:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1227 printf("Instrument = '%s'",msg.MsgData.MetaEvent.Data.Text.pData);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1228 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1229 case metaLyric:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1230 printf("Lyric = '%s'",msg.MsgData.MetaEvent.Data.Text.pData);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1231 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1232 case metaMarker:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1233 printf("Marker = '%s'",msg.MsgData.MetaEvent.Data.Text.pData);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1234 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1235 case metaCuePoint:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1236 printf("Cue point = '%s'",msg.MsgData.MetaEvent.Data.Text.pData);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1237 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1238 case metaEndSequence:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1239 printf("End Sequence");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1240 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1241 case metaSetTempo:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1242 printf("Tempo = %d",msg.MsgData.MetaEvent.Data.Tempo.iBPM);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1243 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1244 case metaSMPTEOffset:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1245 printf("SMPTE offset = %d:%d:%d.%d %d",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1246 msg.MsgData.MetaEvent.Data.SMPTE.iHours,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1247 msg.MsgData.MetaEvent.Data.SMPTE.iMins,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1248 msg.MsgData.MetaEvent.Data.SMPTE.iSecs,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1249 msg.MsgData.MetaEvent.Data.SMPTE.iFrames,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1250 msg.MsgData.MetaEvent.Data.SMPTE.iFF
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1251 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1252 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1253 case metaTimeSig:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1254 printf("Time sig = %d/%d",msg.MsgData.MetaEvent.Data.TimeSig.iNom,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1255 msg.MsgData.MetaEvent.Data.TimeSig.iDenom/MIDI_NOTE_CROCHET);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1256 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1257 case metaKeySig:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1258 if (muGetKeySigName(str, msg.MsgData.MetaEvent.Data.KeySig.iKey))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1259 printf("Key sig = %s", str);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1260 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1261
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1262 case metaSequencerSpecific:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1263 printf("Sequencer specific = ");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1264 HexList(msg.MsgData.MetaEvent.Data.Sequencer.pData, msg.MsgData.MetaEvent.Data.Sequencer.iSize);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1265 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1266 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1267 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1268
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1269 case msgSysEx1:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1270 case msgSysEx2:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1271 printf("Sysex = ");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1272 HexList(msg.MsgData.SysEx.pData, msg.MsgData.SysEx.iSize);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1273 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1274 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1275
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1276 if (ev == msgSysEx1 || ev == msgSysEx1 || (ev==msgMetaEvent && msg.MsgData.MetaEvent.iType==metaSequencerSpecific))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1277 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1278 /* Already done a hex dump */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1279 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1280 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1281 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1282 printf("\t[");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1283 if (msg.bImpliedMsg) printf("%.2x!", msg.iImpliedMsg);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1284 for(j=0;j<msg.iMsgSize;j++)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1285 printf("%.2x ", msg.data[j]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1286 printf("]\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1287 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1288 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1289 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1290
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1291 void LoadMIDIEventList(const char *pFilename)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1292 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1293 printf("--- MIDISYS ENGINE: LoadMIDIEventList(\"%s\")\n", pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1294 MIDI_FILE *mf = midiFileOpen(pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1295 int ev;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1296
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1297 int timeline_index = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1298 int track_index = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1299 MIDI_MSG msg;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1300
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1301 if (mf)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1302 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1303 int i, iNum;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1304
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1305 midiReadInitMessage(&msg);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1306 iNum = midiReadGetNumTracks(mf);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1307
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1308 for(i=0;i<iNum;i++)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1309 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1310 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1311 printf("# Track %d\n", i);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1312 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1313 while(midiReadGetNextMessage(mf, i, &msg))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1314 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1315 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1316 printf(" %.6ld ", msg.dwAbsPos);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1317 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1318
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1319 if (msg.bImpliedMsg) { ev = msg.iImpliedMsg; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1320 else { ev = msg.iType; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1321
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1322 memcpy(&timeline[track_index][timeline_index], &msg, sizeof(MIDI_MSG));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1323
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1324 if (ev == msgMetaEvent && msg.MsgData.MetaEvent.iType == metaTrackName)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1325 {
41
78c981f2ff2d Fix some obvious errors.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
1326 strncpy(timeline_trackname[track_index], (char *) msg.MsgData.MetaEvent.Data.Text.pData, 8);
78c981f2ff2d Fix some obvious errors.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
1327 timeline_trackname[track_index][8] = 0;
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1328 printf("track #%d, name = \"%s\"\n", track_index, timeline_trackname[track_index]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1329 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1330
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1331 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1332 DebugPrintEvent(ev,msg);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1333 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1334
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1335 timeline_index++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1336
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1337 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1338 printf("track length: %d\n", timeline_index);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1339 timeline_tracklength[track_index] = timeline_index;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1340 track_index++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1341 timeline_index = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1342 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1343
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1344 timeline_trackcount = track_index;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1345 midiReadFreeMessage(&msg);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1346
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1347 midiFileClose(mf);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1348 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1349
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1350 //timeline_length = timeline_index+1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1351 printf("--- MIDISYS ENGINE: LoadMIDIEventList() success\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1352 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1353
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1354 void ParseMIDITimeline(const char* mappingFile)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1355 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1356 printf("--- MIDISYS ENGINE: ParseMIDITimeline(\"%s\")\n", mappingFile);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1357 int cnt;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1358 char *line;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1359
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1360 FILE *mapfile;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1361
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1362 if ((mapfile = fopen(mappingFile, "r")))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1363 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1364 cnt = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1365 while (0 == fggets(&line, mapfile)) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1366 char* token = strtok(line, ",");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1367 int paramnum = atoi(token);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1368 mapping_paramnum[cnt] = paramnum;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1369
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1370 token = strtok(NULL, ",");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1371 sprintf(mapping_trackname[cnt],"%s",token);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1372
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1373 token = strtok(NULL, ",");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1374 if (strcmp("param",token) == 0) mapping_type[cnt] = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1375 else mapping_type[cnt] = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1376
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1377 // token = strtok(NULL, ",");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1378 // sprintf(englines[cnt],"%s",token);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1379
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1380 int i = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1381 int found = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1382 for (i = 0; i < timeline_trackcount; i++)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1383 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1384 if (strcmp(timeline_trackname[i], mapping_trackname[cnt]) == 0)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1385 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1386 printf("MIDI track #%d (\"%s\") maps to shader param %d, type: %s\n", i, mapping_trackname[cnt], mapping_paramnum[cnt], mapping_type[cnt] == 0 ? "trig" : "param");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1387 mapping_tracknum[cnt] = i;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1388 cnt++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1389 found = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1390 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1391 if (found == 1) break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1392 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1393 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1394 mapping_count = cnt;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1395 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1396 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1397 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1398 printf("ParseMIDITimeline error: MIDI mapping file \"%s\" cannot be opened\n", mappingFile);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1399 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1400 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1401 printf("--- MIDISYS ENGINE: ParseMIDITimeline() success\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1402 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1403
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1404
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1405 void stbi_flip_y(int w, int h, int comp, stbi_uc *data)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1406 {
44
f0073a47c31d Fix various warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 42
diff changeset
1407 int y;
f0073a47c31d Fix various warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 42
diff changeset
1408 size_t i, stride = w * comp;
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1409 uint8 *out = data;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1410
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1411 for (y = 0; y < (h>>1); ++y) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1412 stbi_uc *p1 = out + y * stride;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1413 stbi_uc *p2 = out + (h-1-y) * stride;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1414 for (i = 0; i < stride; ++i) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1415 stbi_uc t = p1[i];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1416 p1[i] = p2[i];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1417 p2[i] = t;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1418 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1419 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1420 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1421
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1422 int scale_image_RGB_to_NTSC_safe(int width, int height, int channels,stbi_uc* data) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1423 const float scale_lo = 16.0f - 0.499f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1424 const float scale_hi = 235.0f + 0.499f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1425 int i, j;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1426 int nc = channels;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1427
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1428 unsigned char* orig = data;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1429
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1430 unsigned char scale_LUT[256];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1431 /* error check */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1432 if( (width < 1) || (height < 1) ||
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1433 (channels < 1) || (orig == NULL) )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1434 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1435 /* nothing to do */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1436 return 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1437 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1438 /* set up the scaling Look Up Table */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1439 for( i = 0; i < 256; ++i )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1440 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1441 scale_LUT[i] = (unsigned char)((scale_hi - scale_lo) * i / 255.0f + scale_lo);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1442 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1443 /* for channels = 2 or 4, ignore the alpha component */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1444 nc -= 1 - (channels & 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1445 /* OK, go through the image and scale any non-alpha components */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1446 for( i = 0; i < width*height*channels; i += channels )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1447 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1448 for( j = 0; j < nc; ++j )
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1449 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1450 orig[i+j] = scale_LUT[orig[i+j]];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1451 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1452 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1453 return 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1454 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1455
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1456
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1457 GLuint LoadTexture(const char* pFilename, int invert)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1458 {
44
f0073a47c31d Fix various warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 42
diff changeset
1459 if(!load_textures) return 0;
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1460
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1461 if (strcmp(pFilename,"") == 0) return 99999;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1462 printf(" - LoadTexture(\"%s\")", pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1463 GLuint tex_2d;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1464 unsigned char *data;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1465 int x, y, comp;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1466
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1467 FILE *file = fopen(pFilename, "rb");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1468 if (!file)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1469 return 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1470
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1471 data = stbi_load_from_file(file, &x, &y, &comp, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1472 fclose(file);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1473 //gluBuild2DMipmaps( GL_TEXTURE_2D, 4, x, y, GL_RGBA, GL_UNSIGNED_BYTE, data );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1474
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1475 glGenTextures( 1, &tex_2d );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1476 glBindTexture( GL_TEXTURE_2D, tex_2d );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1477 glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1478 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1479 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1480 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1481 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1482
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1483
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1484 if (invert == 1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1485 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1486 stbi_flip_y(x, y, comp, data);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1487 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1488 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1489 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1490 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1491
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1492 scale_image_RGB_to_NTSC_safe(x,y,comp,data);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1493
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1494 if( comp == 3 ) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1495 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, x, y, 0, GL_RGB, GL_UNSIGNED_BYTE, data );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1496 } else if( comp == 4 ) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1497 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1498 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1499
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1500
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1501 if(0 == tex_2d)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1502 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1503 printf(" error loading texture from file \"%s\"\n", pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1504 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1505 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1506
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1507 printf(" success\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1508
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1509 return tex_2d;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1510 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1511
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1512 GLuint LoadTexture(const char* pFilename)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1513 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1514 return LoadTexture(pFilename, 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1515 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1516
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1517 int LoadGLTextures(const aiScene* scene) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1518
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1519 if (scene->HasTextures())
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1520 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1521 printf("ERROR: support for meshes with embedded textures is not implemented\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1522 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1523 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1524
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1525 /* scan scene's materials for textures */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1526 for (unsigned int m=0; m<scene->mNumMaterials; m++)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1527 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1528 int texIndex = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1529 aiReturn texFound = AI_SUCCESS;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1530 aiString path; // filename
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1531
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1532 while (texFound == AI_SUCCESS)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1533 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1534 texFound = scene->mMaterials[m]->GetTexture(aiTextureType_DIFFUSE, texIndex, &path);
44
f0073a47c31d Fix various warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 42
diff changeset
1535 textureIdMap[path.data] = LoadTexture(path.data, 0);
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1536 texIndex++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1537 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1538 }
44
f0073a47c31d Fix various warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 42
diff changeset
1539
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1540 return true;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1541 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1542
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1543 GLuint LoadShader(const char* pFilename)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1544 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1545 fprintf(stdout," - LoadShader(\"%s\")", pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1546
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1547 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1548 printf("\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1549 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1550
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1551 char vsName[256] = "";
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1552 strcpy(vsName, pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1553 strcat(vsName, ".vs");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1554
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1555 char fsName[256] = "";
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1556 strcpy(fsName, pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1557 strcat(fsName, ".fs");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1558
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1559 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1560 fprintf(stdout,"\tLoadShader(\"%s\") vertex shader source file: \"%s\"\n", pFilename, vsName);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1561 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1562
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1563 GLchar *vsSource = File2String(vsName);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1564
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1565 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1566 fprintf(stdout,"\tLoadShader(\"%s\") vertex shader source:\n----------------------------------------------------\n%s\n----------------------------------------------------\n", pFilename, vsSource);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1567 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1568
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1569 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1570 fprintf(stdout,"\tLoadShader(\"%s\") fragment shader source file: \"%s\"\n", pFilename, fsName);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1571 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1572
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1573 GLchar *fsSource = File2String(fsName);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1574
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1575 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1576 fprintf(stdout,"\tLoadShader(\"%s\") fragment shader source:\n----------------------------------------------------\n%s\n----------------------------------------------------\n", pFilename, fsSource);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1577 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1578
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1579 GLuint vs, fs, sp;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1580
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1581 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1582 printf("\tLoadShader(): vs glCreateShader\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1583 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1584 vs = glCreateShader(GL_VERTEX_SHADER);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1585 PrintShaderLog(vs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1586 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1587 printf("\tLoadShader(): vs glShaderSource\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1588 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1589 glShaderSource(vs, 1, (const GLchar**)&vsSource, NULL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1590 PrintShaderLog(vs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1591 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1592 printf("\tLoadShader(): vs glCompileShader\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1593 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1594 glCompileShader(vs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1595 PrintShaderLog(vs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1596 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1597 printf("\tLoadShader(): vs compiled\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1598 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1599
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1600 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1601 printf("\tLoadShader(): fs glCreateShader\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1602 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1603 fs = glCreateShader(GL_FRAGMENT_SHADER);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1604 PrintShaderLog(fs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1605 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1606 printf("\tLoadShader(): fs glShaderSource\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1607 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1608 glShaderSource(fs, 1, (const GLchar**)&fsSource, NULL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1609 PrintShaderLog(fs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1610 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1611 printf("\tLoadShader(): fs glCompileShader\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1612 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1613 glCompileShader(fs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1614 PrintShaderLog(fs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1615 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1616 printf("\tLoadShader(): fs compiled\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1617 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1618
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1619 free(vsSource);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1620 free(fsSource);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1621
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1622 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1623 printf("\tLoadShader(): glCreateProgram\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1624 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1625 sp = glCreateProgram();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1626 PrintShaderLog(sp);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1627 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1628 printf("\tLoadShader(): glAttachShader vs\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1629 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1630 glAttachShader(sp, vs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1631 PrintShaderLog(sp);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1632 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1633 printf("\tLoadShader(): glAttachShader fs\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1634 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1635 glAttachShader(sp, fs);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1636 PrintShaderLog(sp);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1637 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1638 printf("\tLoadShader(): glLinkProgram\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1639 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1640 glLinkProgram(sp);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1641 PrintShaderLog(sp);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1642
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1643 #ifdef SUPERVERBOSE
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1644 fprintf(stdout,"--- MIDISYS ENGINE: LoadShader(\"%s\") success\n", pFilename);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1645 #else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1646 printf(" success\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1647 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1648
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1649 return sp;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1650 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1651
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1652 ///////////////////////////////////////////////////////////////// EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1653 ///////////////////////////////////////////////////////////////// EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1654 ///////////////////////////////////////////////////////////////// EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1655 ///////////////////////////////////////////////////////////////// EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1656 ///////////////////////////////////////////////////////////////// EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1657
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1658
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1659 // Can't send color down as a pointer to aiColor4D because AI colors are ABGR.
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1660 void Color4f(const aiColor4D *color)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1661 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1662 glColor4f(color->r, color->g, color->b, color->a);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1663 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1664
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1665 void set_float4(float f[4], float a, float b, float c, float d)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1666 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1667 f[0] = a;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1668 f[1] = b;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1669 f[2] = c;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1670 f[3] = d;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1671 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1672
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1673 void color4_to_float4(const aiColor4D *c, float f[4])
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1674 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1675 f[0] = c->r;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1676 f[1] = c->g;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1677 f[2] = c->b;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1678 f[3] = c->a;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1679 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1680
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1681 void apply_material(const aiMaterial *mtl)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1682 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1683 float c[4];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1684
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1685 GLenum fill_mode;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1686 int ret1, ret2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1687 aiColor4D diffuse;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1688 aiColor4D specular;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1689 aiColor4D ambient;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1690 aiColor4D emission;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1691 float shininess, strength;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1692 int two_sided;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1693 int wireframe;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1694 unsigned int max; // changed: to unsigned
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1695
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1696 int texIndex = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1697 aiString texPath; //contains filename of texture
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1698
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1699 if(AI_SUCCESS == mtl->GetTexture(aiTextureType_DIFFUSE, texIndex, &texPath))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1700 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1701 //bind texture
44
f0073a47c31d Fix various warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 42
diff changeset
1702 GLuint texId = (GLuint) textureIdMap.at(texPath.data);
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1703 if (texId != 99999) glBindTexture(GL_TEXTURE_2D, texId);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1704 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1705
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1706 set_float4(c, 0.8f, 0.8f, 0.8f, 1.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1707 if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_DIFFUSE, &diffuse))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1708 color4_to_float4(&diffuse, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1709 glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1710
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1711 set_float4(c, 0.0f, 0.0f, 0.0f, 1.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1712 if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_SPECULAR, &specular))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1713 color4_to_float4(&specular, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1714 glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1715
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1716 set_float4(c, 0.2f, 0.2f, 0.2f, 1.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1717 if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_AMBIENT, &ambient))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1718 color4_to_float4(&ambient, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1719 glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1720
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1721 set_float4(c, 0.0f, 0.0f, 0.0f, 1.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1722 if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_EMISSIVE, &emission))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1723 color4_to_float4(&emission, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1724 glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1725
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1726 max = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1727 ret1 = aiGetMaterialFloatArray(mtl, AI_MATKEY_SHININESS, &shininess, &max);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1728 max = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1729 ret2 = aiGetMaterialFloatArray(mtl, AI_MATKEY_SHININESS_STRENGTH, &strength, &max);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1730 if((ret1 == AI_SUCCESS) && (ret2 == AI_SUCCESS))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1731 glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess * strength);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1732 else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1733 glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1734 set_float4(c, 0.0f, 0.0f, 0.0f, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1735 glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, c);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1736 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1737
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1738 max = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1739 if(AI_SUCCESS == aiGetMaterialIntegerArray(mtl, AI_MATKEY_ENABLE_WIREFRAME, &wireframe, &max))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1740 fill_mode = wireframe ? GL_LINE : GL_FILL;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1741 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1742 fill_mode = GL_FILL;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1743 glPolygonMode(GL_FRONT_AND_BACK, fill_mode);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1744
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1745 max = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1746 if((AI_SUCCESS == aiGetMaterialIntegerArray(mtl, AI_MATKEY_TWOSIDED, &two_sided, &max)) && two_sided)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1747 glEnable(GL_CULL_FACE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1748 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1749 glDisable(GL_CULL_FACE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1750 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1751
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1752
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1753 void recursive_render (const struct aiScene *sc, const struct aiNode* nd, float scale)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1754 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1755
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1756 unsigned int i;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1757 unsigned int n=0, t;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1758 aiMatrix4x4 m = nd->mTransformation;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1759
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1760 aiMatrix4x4 m2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1761 aiMatrix4x4::Scaling(aiVector3D(scale, scale, scale), m2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1762 m = m * m2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1763
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1764 // update transform
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1765 m.Transpose();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1766 glPushMatrix();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1767 glMultMatrixf((float*)&m);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1768
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1769 // draw all meshes assigned to this node
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1770 for (; n < nd->mNumMeshes; ++n)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1771 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1772 const struct aiMesh* mesh = sc->mMeshes[nd->mMeshes[n]];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1773
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1774 apply_material(sc->mMaterials[mesh->mMaterialIndex]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1775
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1776
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1777 if(mesh->mNormals == NULL)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1778 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1779 glDisable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1780 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1781 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1782 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1783 glEnable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1784 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1785
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1786 if(mesh->mColors[0] != NULL)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1787 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1788 glEnable(GL_COLOR_MATERIAL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1789 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1790 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1791 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1792 glDisable(GL_COLOR_MATERIAL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1793 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1794
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1795
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1796
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1797 for (t = 0; t < mesh->mNumFaces; ++t) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1798 const struct aiFace* face = &mesh->mFaces[t];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1799 GLenum face_mode;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1800
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1801 switch(face->mNumIndices)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1802 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1803 case 1: face_mode = GL_POINTS; break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1804 case 2: face_mode = GL_LINES; break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1805 case 3: face_mode = GL_TRIANGLES; break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1806 default: face_mode = GL_POLYGON; break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1807 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1808
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1809 glBegin(face_mode);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1810
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1811 for(i = 0; i < face->mNumIndices; i++) // go through all vertices in face
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1812 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1813 int vertexIndex = face->mIndices[i]; // get group index for current index
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1814 if(mesh->mColors[0] != NULL)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1815 Color4f(&mesh->mColors[0][vertexIndex]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1816 if(mesh->mNormals != NULL)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1817
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1818 if(mesh->HasTextureCoords(0)) //HasTextureCoords(texture_coordinates_set)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1819 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1820 glTexCoord2f(mesh->mTextureCoords[0][vertexIndex].x, 1 - mesh->mTextureCoords[0][vertexIndex].y); //mTextureCoords[channel][vertex]
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1821 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1822
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1823 glNormal3fv(&mesh->mNormals[vertexIndex].x);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1824 glVertex3fv(&mesh->mVertices[vertexIndex].x);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1825 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1826
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1827 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1828
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1829 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1830
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1831 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1832
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1833
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1834 // draw all children
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1835 for (n = 0; n < nd->mNumChildren; ++n)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1836 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1837 recursive_render(sc, nd->mChildren[n], scale);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1838 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1839
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1840 glPopMatrix();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1841 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1842 float jormymillis = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1843 float startti = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1844 float startti2 = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1845 float pantime = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1846 void BiloThreeScene()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1847 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1848 float mymillis = (millis-scene_start_millis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1849 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1850 glUseProgram(0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1851
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1852 float colmy = mymillis*0.0001;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1853 if (colmy > 0.5) colmy = 0.5;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1854
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1855 if (millis > 302800) colmy-=((millis-302800)*0.00001);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1856
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1857 glClearColor(colmy, 0.0f, 0.0f, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1858 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1859
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1860 glDisable(GL_TEXTURE_2D);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1861 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1862 glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_DST_COLOR);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1863
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1864 glShadeModel(GL_SMOOTH); // Enables Smooth Shading
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1865 glEnable(GL_DEPTH_TEST); // Enables Depth Testing
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1866 glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1867 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculation
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1868
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1869 glDisable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1870 glEnable(GL_LIGHT0); // Uses default lighting parameters
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1871 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1872 glEnable(GL_NORMALIZE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1873
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1874 float zoom = -300.0f+(((mymillis-jormymillis)*atan(mymillis*0.005))*0.05);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1875
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1876 if (zoom > -0.5 && startti == 0) { startti = mymillis; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1877 if (zoom >= -0.5) { zoom = -0.5; jormymillis+=290;}
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1878
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1879 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1880
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1881 if (jormymillis > 300*60 && startti2 == 0)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1882 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1883 startti2 = mymillis;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1884 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1885
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1886 if (jormymillis > 300*60)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1887 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1888 pantime = mymillis-startti2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1889 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1890
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1891 glTranslatef(0.0f, startti2 > 0 ? -7.5f-pantime*0.0008 : -7.5f, zoom+pantime*0.001*atan(pantime*0.005));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1892 if (jormymillis > 0) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1893 glRotatef(jormymillis*0.0026,-1.0,0.0,0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1894 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1895
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1896 float zoomfactor = 2.0+jormymillis*0.0001;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1897 if (zoomfactor > 4.0) zoomfactor = 4.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1898
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1899 if (startti > 0) recursive_render(bilothree, bilothree->mRootNode, zoomfactor-0.5);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1900 recursive_render(bilothree, bilothree->mRootNode, zoomfactor);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1901 recursive_render(bilothree, bilothree->mRootNode, 6.0-zoomfactor);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1902
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1903 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1904
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1905
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1906
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1907
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1908 void KolmeDeeLogic(float dt)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1909 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1910 kujalla_angle += dt*0.01;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1911 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1912
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1913 void kapsule_render()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1914 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1915
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1916 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1917 glUseProgram(0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1918 glEnable(GL_TEXTURE_2D);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1919 glShadeModel(GL_SMOOTH); // Enables Smooth Shading
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1920 glEnable(GL_DEPTH_TEST); // Enables Depth Testing
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1921 glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1922 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculation
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1923
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1924 glEnable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1925 glEnable(GL_LIGHT0); // Uses default lighting parameters
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1926 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1927 glEnable(GL_NORMALIZE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1928
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1929 GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1930 GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1931 GLfloat LightPosition[]= { 0.0f, 0.0f, 15.0f, 1.0f };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1932
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1933 glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1934 glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1935 glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1936 glEnable(GL_LIGHT1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1937
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1938 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1939
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1940 glTranslatef(0.0f, 0.0f, -50.0f+cos(millis*0.05)*25); // Move 40 Units And Into The Screen
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1941 glRotatef(millis*0.01,1.0,0,0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1942 glRotatef(millis*0.008,0.0,0.0,1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1943 glRotatef(millis*0.006,0.0,1.0,0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1944
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1945 recursive_render(kapsule, kapsule->mRootNode, 2.5);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1946 glDisable(GL_DEPTH_TEST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1947 glDisable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1948 glDisable(GL_NORMALIZE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1949 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1950
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1951 float brimillis = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1952 float bristart = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1953 float brixrot = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1954 float briyrot = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1955
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1956 void brieflycase_render()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1957 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1958 if (bristart == 0) {bristart = millis;}
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1959 brimillis = millis-bristart;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1960
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1961 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1962 glUseProgram(0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1963 glEnable(GL_TEXTURE_2D);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1964 glShadeModel(GL_SMOOTH); // Enables Smooth Shading
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1965 glEnable(GL_DEPTH_TEST); // Enables Depth Testing
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1966 glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1967 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculation
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1968
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1969 glEnable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1970 glEnable(GL_LIGHT0); // Uses default lighting parameters
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1971 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1972 glEnable(GL_NORMALIZE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1973
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1974 float brifade = 1.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1975
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1976 if (brimillis <= 1000) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1977 brifade = brimillis*0.001;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1978 if (brifade > 1.0f) brifade = 1.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1979 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1980 GLfloat LightAmbient[]= { 0.5f*brifade, 0.5f*brifade, 0.5f*brifade, 1.0f*brifade };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1981 GLfloat LightDiffuse[]= { 1.0f*brifade, 1.0f*brifade, 1.0f*brifade, 1.0f*brifade };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1982 GLfloat LightPosition[]= { 0.0f, 0.0f, 15.0f*brifade, 1.0f*brifade };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1983
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1984 glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1985 glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1986 glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1987 glEnable(GL_LIGHT1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1988
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1989 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1990
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1991 //nosto
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1992 if (brimillis > 1000 && brimillis < 3000)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1993 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1994 briyrot=(brimillis-1000)*0.047*(1.0-(cos(brimillis*0.001)));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1995 if (briyrot > 90.0f) briyrot = 90.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1996 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1997
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1998 if (brimillis > 5000)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1999 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2000 brixrot=(brimillis-5000)*0.047*2* 1.0-(cos((brimillis-4000)*0.0001));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2001 // if (brixrot > 180.0f) brixrot = 180.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2002 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2003
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2004 glTranslatef(0.0f, 0.0f, -50.0f+brixrot*0.2); // Move 40 Units And Into The Screen
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2005 //glRotatef(millis*0.001,1.0,0,0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2006 glRotatef(-briyrot,1.0,0.0,0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2007 glRotatef(brixrot,0.0,0.0,1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2008
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2009 recursive_render(brieflycase, brieflycase->mRootNode, 2.5);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2010 glDisable(GL_DEPTH_TEST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2011 glDisable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2012 glDisable(GL_NORMALIZE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2013 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2014
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2015
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2016 void
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2017 on_key_press ( unsigned char key)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2018 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2019 if (key == 1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2020 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2021 console_process( console, "home", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2022 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2023 else if (key == 4)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2024 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2025 console_process( console, "delete", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2026 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2027 else if (key == 5)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2028 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2029 console_process( console, "end", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2030 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2031 else if (key == 8)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2032 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2033 console_process( console, "backspace", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2034 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2035 else if (key == 9)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2036 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2037 console_process( console, "complete", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2038 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2039 else if (key == 11)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2040 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2041 console_process( console, "kill", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2042 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2043 else if (key == 12)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2044 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2045 console_process( console, "clear", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2046 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2047 else if (key == 13)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2048 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2049 console_process( console, "enter", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2050 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2051 else if (key == 25)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2052 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2053 console_process( console, "yank", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2054 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2055 else if (key == 27)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2056 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2057 console_process( console, "escape", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2058 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2059 else if (key == 127)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2060 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2061 console_process( console, "backspace", 0 );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2062 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2063 else if( key > 31)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2064 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2065 console_process( console, "type", key );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2066 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2067 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2068
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2069 /*void LoaderLogic(float dt)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2070 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2071 printf("DEBUG: LoaderLogic(%f)\n", dt);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2072 }*/
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2073
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2074 int keyindex = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2075 int nextmillis = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2076 void ConsoleLogic(float dt)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2077 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2078 // int kmillis = (int)(millis-15750);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2079 int kmillis = (int)(millis-scene_start_millis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2080
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2081 //printf("kmillis:%d\n",kmillis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2082 if (kmillis >= 0 && kmillis >= keymillis[keyindex])
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2083 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2084 if(keyindex >= 0 && keyindex < KEYEVENTS_COUNT)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2085 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2086 on_key_press(keyrec[keyindex]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2087 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2088
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2089 keyindex++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2090 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2091 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2092
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2093 int keyindex2 = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2094
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2095 void ConsoleLogic2(float dt)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2096 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2097 int kmillis = -2000+(int)((millis-scene_start_millis)*1.3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2098
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2099 //printf("kmillis:%d\n",kmillis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2100 if (kmillis >= 0 && kmillis >= keymillis2[keyindex2])
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2101 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2102 if(keyindex2 >= 0 && keyindex2 < KEYEVENTS_COUNT2)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2103 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2104 on_key_press(keyrec2[keyindex2]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2105 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2106
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2107 keyindex2++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2108 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2109 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2110
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2111 int kolmedeeindex = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2112
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2113 const aiScene* Import3DFromFile(const std::string& pFile)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2114 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2115 fprintf(stdout," - Import3DFromFile(\"%s\")", pFile.c_str());
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2116
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2117 //check if file exists
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2118 std::ifstream fin(pFile.c_str());
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2119 if(!fin.fail())
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2120 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2121 fin.close();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2122 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2123 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2124 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2125 printf(" could not open file %s\n", pFile.c_str());
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2126 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2127 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2128
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2129 const aiScene* scener = importer[kolmedeeindex].ReadFile( pFile, aiProcessPreset_TargetRealtime_Quality);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2130
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2131 // If the import failed, report it
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2132 if( !scener)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2133 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2134 printf(" import failed %s\n", pFile.c_str());
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2135 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2136 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2137
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2138 kolmedeeindex++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2139
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2140 fprintf(stdout," success\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2141
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2142 // We're done. Everything will be cleaned up by the importer destructor
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2143 return scener;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2144 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2145
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2146 int shader_index = 1; // 1 not 0 because console shader is loaded separately
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2147 bool LoadShaders()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2148 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2149 if(shader_index == sizeof(shaders) / sizeof(shaders[0])) return false;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2150 shaders[shader_index] = LoadShader(shaderss[shader_index]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2151 shader_index++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2152
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2153 return true;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2154 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2155 int texture_index = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2156 bool LoadTextures()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2157 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2158 if(texture_index == sizeof(textures) / sizeof(textures[0])) return false;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2159 textures[texture_index] = LoadTexture(texturess[texture_index]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2160 texture_index++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2161
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2162 return true;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2163 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2164 int assets_3dmodel_total = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2165 bool Load3DAssets()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2166 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2167 kapsule = Import3DFromFile("data/models/kapsule.obj");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2168 LoadGLTextures(kapsule);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2169
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2170 return true;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2171 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2172
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2173 bool assets_loaded = false;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2174 int skip_frames = 10;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2175 int skip_frames_count = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2176 clock_t t_loader_begin = 0, t_loader_d;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2177 int assets_index = -1, assets_total = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2178 int loader_phase = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2179 float loading_time = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2180 void Loader()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2181 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2182 if(t_loader_begin == 0) { current_scene = 0; t_loader_begin = clock(); assets_total = ((sizeof(shaders) / sizeof(shaders[0])) + (sizeof(textures) / sizeof(textures[0])) + assets_3dmodel_total ); } else { loading_time = (float)((((float)t_loader_d - (float)t_loader_begin) / 1000000.0F ) * 1000); }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2183 if(assets_total == -1) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2184 printf("ERROR: Loader(): No assets to load and/or something is just terribly wrong! Terminating...\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2185 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2186 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2187
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2188 float phase = (float)((float)(assets_index) / (float)(assets_total));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2189 const aiScene* loaderscene = bilothorn;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2190
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2191 //glClearColor (phase,phase,phase,1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2192 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2193
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2194 float mymillis = phase*1750;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2195 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2196 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2197
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2198 glUseProgram(0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2199
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2200 glDisable(GL_TEXTURE_2D);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2201 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2202 glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2203
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2204 glShadeModel(GL_SMOOTH); // Enables Smooth Shading
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2205 //glClearColor(1.0f-phase,1.0f-phase,1.0f-phase, 1.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2206 glClearDepth(1.0f); // Depth Buffer Setup
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2207 glEnable(GL_DEPTH_TEST); // Enables Depth Testing
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2208 glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2209 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculation
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2210
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2211 glDisable(GL_LIGHTING);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2212 glEnable(GL_LIGHT0); // Uses default lighting parameters
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2213 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2214 glDisable(GL_NORMALIZE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2215
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2216 float r, g, b, a = 1.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2217 if(loader_phase < 1) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2218 r = g = b = sin(loading_time*100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2219 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2220 r = g = b = a;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2221 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2222 GLfloat LightAmbient[]= { r, g, b, a };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2223 GLfloat LightDiffuse[]= { r, g, b, a };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2224 GLfloat LightPosition[]= { 0.0f, 0.0f, 15.0f, 1.0f};
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2225 //GLfloat LightAmbient[]= { 0.0f, 1.0f-phase, 0.0f, 1.0f };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2226 // GLfloat LightDiffuse[]= { 0.0f, 1.0f-phase, 0.0f, 1.0f };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2227 // GLfloat LightPosition[]= { 0.0f, 0.0f, 15.0f, 1.0f };
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2228
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2229 glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2230 glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2231 glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2232 glEnable(GL_LIGHT1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2233
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2234 float zoom = -50.0f+((mymillis)*0.05*0.2)*((phase+0.5f)*(phase+0.5f)*(phase+0.5f));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2235
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2236 if (zoom > -0.5 && startti == 0) { startti = mymillis; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2237 if (zoom >= -0.5) { zoom = -0.5; jormymillis=(mymillis-startti); }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2238
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2239
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2240 if (jormymillis > 0) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2241 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2242 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2243
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2244 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2245
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2246 glRotatef(180.0f*phase*0.974,0.0,0.0,1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2247 glTranslatef(0.0f, 0.0f, zoom);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2248 /*if (jormymillis > 0) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2249 glRotatef(jormymillis*0.0026,-1.0,0.0,0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2250 }*/
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2251
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2252 skip_frames_count++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2253 if(skip_frames_count == skip_frames) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2254 skip_frames_count = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2255 assets_index++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2256 printf("--- MIDISYS-ENGINE: Loading asset #%i", assets_index);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2257
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2258 // begin loading animation
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2259
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2260 if(loader_phase == -1) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2261 loader_phase = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2262 } else if(loader_phase == 0) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2263 if(!LoadShaders()) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2264 loader_phase = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2265 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2266 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2267 } else if(loader_phase == 1) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2268 if(!LoadTextures()) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2269 loader_phase = 2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2270 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2271 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2272 } else if(loader_phase == 2) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2273 printf("..%i", assets_total);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2274 // load all 3d models; after that all asset loading is done
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2275 Load3DAssets();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2276 loader_phase = 3;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2277 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2278 assets_loaded = true;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2279 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2280 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2281 // format bilotrip terminal 1.6.2.0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2282
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2283 /*if(phase > 0.975f) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2284 phase = 1.0f-phase;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2285 }*/
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2286 glClearColor ((1.0f-phase)*0.86,(1.0f-phase)*0.86,(1.0f-phase)*0.86,1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2287 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2288 glFlush();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2289 glutSwapBuffers();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2290 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2291
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2292 //printf("n:%i\n",(int)((float)((float)(assets_index) / (float)(assets_total)) * 3.0f));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2293 /*glBegin(GL_TRIANGLES);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2294 glVertex3f(-25.0f,-25.0f,-50.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2295 glVertex3f(-25.0f,25.0f,-50.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2296 glVertex3f(25.0f,25.0f,-50.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2297 glEnd();*/
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2298 //glTranslatef(0.0,floor(phase+0.25f),0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2299 for(int n = 0; n < (int)(phase*6.9f); n++) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2300 if(n<3) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2301 int t = floor(n/3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2302 float tf = (float)(t)*120.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2303 if(n!=0&&n%3==0) glTranslatef(0.0,0.0,tf);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2304 glRotatef(120.0f,0.0,0.0,((float)(n)*phase));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2305 recursive_render(loaderscene, loaderscene->mRootNode, 2.0+jormymillis*0.001);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2306 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2307 //if (jormymillis > 0)recursive_render(loaderscene, loaderscene->mRootNode, 4.0-jormymillis*0.001);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2308 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2309
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2310
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2311 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2312 glDisable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2313 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2314
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2315
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2316 glUseProgram(shaders[hex]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2317 float widthLoc5 = glGetUniformLocation(shaders[hex], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2318 float heightLoc5 = glGetUniformLocation(shaders[hex], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2319 float timeLoc5 = glGetUniformLocation(shaders[hex], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2320 float effuLoc5 = glGetUniformLocation(shaders[hex], "effu");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2321
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2322 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2323 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2324 glUniform1f(timeLoc5, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2325 glUniform1f(effuLoc5, jormymillis > 0 ? 1.0 : 0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2326
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2327 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2328 glBindTexture(GL_TEXTURE_2D, fb_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2329
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2330 float location5 = glGetUniformLocation(shaders[hex], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2331 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2332
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2333 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2334
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2335 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2336 //glTranslatef(0.0, 0.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2337
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2338 int i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2339 int j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2340 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2341 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2342 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2343 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2344 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2345 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2346
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2347 glFlush();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2348 glutSwapBuffers();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2349
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2350 glDisable(GL_DEPTH_TEST); // Enables Depth Testing
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2351 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2352 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2353 glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2354 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculation
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2355 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2356 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2357
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2358 if (quitflag == 0) glutPostRedisplay();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2359 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2360
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2361 int vieterframe = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2362 float vieterstart = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2363
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2364 void LeadMaskScene()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2365 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2366 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb); // fbo
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2367 glClear(GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2368 float mymillis = millis;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2369 glUseProgram(shaders[projector]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2370
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2371 int kuvaflag = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2372
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2373 if (millis >= 0 && millis < 25000) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2374 kuvaflag = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2375 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2376 else if (millis >= 25000 && millis < 37000) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2377 kuvaflag = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2378 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2379 else if (millis >= 37000 && millis < 48500) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2380 kuvaflag = 2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2381 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2382 else if (millis >= 48500 && millis < 64000) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2383 kuvaflag = 3;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2384 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2385 else if (millis >= 64000 && millis < 76100) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2386 kuvaflag = 4;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2387 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2388 else if (millis >= 76100 && millis < 84000) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2389 kuvaflag = 5;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2390 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2391 else if (millis >= 84000) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2392 kuvaflag = 6;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2393 if (vieterstart == 0) vieterstart = mymillis;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2394 vieterframe = (int)((mymillis-vieterstart)*0.004);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2395 if (vieterframe > 12) { vieterframe = 0; vieterstart = 0; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2396 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2397
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2398 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2399 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2400 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2401
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2402 GLint widthLoc5 = glGetUniformLocation(shaders[projector], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2403 GLint heightLoc5 = glGetUniformLocation(shaders[projector], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2404 GLint timeLoc5 = glGetUniformLocation(shaders[projector], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2405 GLint alphaLoc5 = glGetUniformLocation(shaders[projector], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2406
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2407 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2408 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2409 glUniform1f(timeLoc5, mymillis - (millis < 64000 ? 0 : 50000));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2410 glUniform1f(alphaLoc5, mymillis*0.0001+0.2-cos(mymillis*0.0005)*0.15);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2411
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2412 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2413 if (kuvaflag == 0)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2414 glBindTexture(GL_TEXTURE_2D, textures[tex_scene]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2415 else if (kuvaflag == 1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2416 glBindTexture(GL_TEXTURE_2D, textures[tex_dude]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2417 else if (kuvaflag == 2)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2418 glBindTexture(GL_TEXTURE_2D, textures[tex_dude2]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2419 else if (kuvaflag == 3)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2420 glBindTexture(GL_TEXTURE_2D, textures[tex_mask]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2421 else if (kuvaflag == 4)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2422 glBindTexture(GL_TEXTURE_2D, textures[tex_note]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2423 else if (kuvaflag == 5)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2424 glBindTexture(GL_TEXTURE_2D, textures[tex_exit]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2425 else if (kuvaflag == 6)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2426 glBindTexture(GL_TEXTURE_2D, textures[tex_v0+vieterframe]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2427
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2428 GLint location5 = glGetUniformLocation(shaders[projector], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2429 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2430
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2431 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2432 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2433
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2434 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2435
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2436 int i,j;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2437
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2438 for (i = -50; i < 50; i+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2439 for (j = -50; j < 50; j+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2440 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2441 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2442 glVertex2f(i + 1, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2443 glVertex2f(i + 1, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2444 glVertex2f(i, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2445 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2446 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2447
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2448 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb2); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2449
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2450 glUseProgram(shaders[fsquad]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2451
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2452 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2453 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2454 glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_ONE_MINUS_DST_COLOR);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2455
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2456 GLint widthLoc6 = glGetUniformLocation(shaders[fsquad], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2457 GLint heightLoc6 = glGetUniformLocation(shaders[fsquad], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2458 GLint timeLoc6 = glGetUniformLocation(shaders[fsquad], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2459 GLint alphaLoc6 = glGetUniformLocation(shaders[fsquad], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2460 GLint gammaLoc = glGetUniformLocation(shaders[fsquad], "gamma");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2461 GLint gridLoc6 = glGetUniformLocation(shaders[fsquad], "grid");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2462 GLint alphamodeLoc5 = glGetUniformLocation(shaders[fsquad], "alphamode");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2463 glUniform1f(alphamodeLoc5, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2464
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2465 glUniform1f(gridLoc6, 0.001+cos(mymillis)*0.0005);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2466
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2467
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2468 glUniform1f(widthLoc6, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2469 glUniform1f(heightLoc6, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2470 glUniform1f(timeLoc6, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2471 glUniform1f(alphaLoc6, 0.1+abs(cos(mymillis*0.08)*0.05));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2472 glUniform1f(gammaLoc, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2473
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2474 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2475 glBindTexture(GL_TEXTURE_2D, fb_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2476
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2477 GLint location6 = glGetUniformLocation(shaders[fsquad], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2478 glUniform1i(location6, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2479
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2480 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2481
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2482 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2483
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2484 i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2485 j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2486 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2487 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2488 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2489 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2490 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2491 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2492
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2493 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2494
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2495 glUseProgram(shaders[fsquad]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2496
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2497 glDisable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2498
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2499 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2500
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2501 GLint widthLoc7 = glGetUniformLocation(shaders[fsquad], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2502 GLint heightLoc7 = glGetUniformLocation(shaders[fsquad], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2503 GLint timeLoc7 = glGetUniformLocation(shaders[fsquad], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2504 GLint alphaLoc7 = glGetUniformLocation(shaders[fsquad], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2505 GLint gammaLoc2 = glGetUniformLocation(shaders[fsquad], "gamma");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2506 GLint gridLoc = glGetUniformLocation(shaders[fsquad], "grid");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2507 GLint alphamodeLoc7 = glGetUniformLocation(shaders[fsquad], "alphamode");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2508 glUniform1f(alphamodeLoc7, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2509
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2510 glUniform1f(widthLoc7, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2511 glUniform1f(heightLoc7, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2512 glUniform1f(timeLoc7, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2513 glUniform1f(alphaLoc7, 1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2514 glUniform1f(gammaLoc2, 4.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2515 glUniform1f(gridLoc, 1.0f+tan(mymillis*10)*0.3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2516
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2517 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2518 glBindTexture(GL_TEXTURE_2D, fb_tex2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2519
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2520 GLint location7 = glGetUniformLocation(shaders[fsquad], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2521 glUniform1i(location7, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2522
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2523 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2524
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2525 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2526
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2527 i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2528 j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2529 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2530 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2531 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2532 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2533 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2534 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2535
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2536 glUseProgram(shaders[projector]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2537
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2538 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2539 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2540 glBlendFunc(GL_SRC_COLOR, GL_DST_ALPHA);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2541
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2542 widthLoc5 = glGetUniformLocation(shaders[projector], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2543 heightLoc5 = glGetUniformLocation(shaders[projector], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2544 timeLoc5 = glGetUniformLocation(shaders[projector], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2545 alphaLoc5 = glGetUniformLocation(shaders[projector], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2546
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2547 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2548 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2549 glUniform1f(timeLoc5, mymillis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2550 glUniform1f(alphaLoc5, 1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2551
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2552 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2553 glBindTexture(GL_TEXTURE_2D, textures[tex_scene]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2554
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2555 location5 = glGetUniformLocation(shaders[projector], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2556 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2557
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2558 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2559 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2560
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2561 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2562
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2563
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2564 for (i = -50; i < 50; i+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2565 for (j = -50; j < 50; j+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2566 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2567 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2568 glVertex2f(i + 1, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2569 glVertex2f(i + 1, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2570 glVertex2f(i, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2571 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2572 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2573
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2574
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2575 if (millis > 37400 && millis < 37600) kapsule_render();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2576
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2577
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2578 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2579
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2580 int copbeatcounter = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2581 int coptexid = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2582 void CopScene()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2583 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2584 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2585
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2586 float mymillis = (millis-scene_start_millis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2587 glUseProgram(shaders[copquad]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2588
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2589 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2590
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2591
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2592 float joo = cos(mymillis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2593 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, joo < 0.5 ? GL_MODULATE : GL_SUBTRACT );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2594 glBlendFunc(GL_SRC_COLOR, joo < 0.5 ? GL_DST_ALPHA : GL_ONE_MINUS_DST_COLOR);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2595
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2596 GLint widthLoc5 = glGetUniformLocation(shaders[copquad], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2597 GLint heightLoc5 = glGetUniformLocation(shaders[copquad], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2598 GLint timeLoc5 = glGetUniformLocation(shaders[copquad], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2599 GLint alphaLoc5 = glGetUniformLocation(shaders[copquad], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2600 GLint gridLoc6 = glGetUniformLocation(shaders[copquad], "grid");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2601 glUniform1f(gridLoc6, tan(mymillis));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2602
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2603 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2604 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2605 glUniform1f(timeLoc5, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2606 glUniform1f(alphaLoc5, cos(mymillis*0.1)*0.01);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2607
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2608 if (scene_shader_params[2] == 36) { copbeatcounter++; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2609 if (copbeatcounter > 0) { coptexid++; copbeatcounter = 0;}
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2610
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2611 //int texind = (int)(mymillis*(0.001/2));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2612 int texind = coptexid;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2613 if (texind > 30) texind = 30;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2614
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2615 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2616 glBindTexture(GL_TEXTURE_2D, textures[tex_copkiller + texind]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2617
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2618 glActiveTexture(GL_TEXTURE1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2619 glBindTexture(GL_TEXTURE_2D, textures[texind == tex_copkiller ? tex_copkiller+17 :
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2620 tex_copkiller + (abs(texind-1))]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2621
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2622 GLint location5 = glGetUniformLocation(shaders[copquad], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2623 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2624
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2625 GLint location6 = glGetUniformLocation(shaders[copquad], "texture1");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2626 glUniform1i(location6, 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2627
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2628 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2629
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2630 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2631
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2632 int i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2633 int j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2634 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2635 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2636 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2637 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2638 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2639 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2640
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2641 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2642
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2643 static int video_started = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2644
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2645 void MarssiScene()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2646 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2647 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2648 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2649 glDisable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2650
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2651 if (video_started == 0)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2652 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2653 myVideoFrame->play();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2654 video_started = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2655 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2656
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2657 myVideoFrame->render();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2658 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2659
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2660 void LongScene()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2661 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2662 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2663 glDisable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2664 glClearColor(0,0,0,0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2665 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2666
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2667 glUseProgram(shaders[fsquad]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2668 float mymillis = (((millis)-scene_start_millis));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2669
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2670 GLint widthLoc5 = glGetUniformLocation(shaders[fsquad], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2671 GLint heightLoc5 = glGetUniformLocation(shaders[fsquad], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2672 GLint timeLoc5 = glGetUniformLocation(shaders[fsquad], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2673 GLint alphaLoc5 = glGetUniformLocation(shaders[fsquad], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2674 GLint gammaLoc = glGetUniformLocation(shaders[fsquad], "gamma");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2675 GLint gridLoc6 = glGetUniformLocation(shaders[fsquad], "grid");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2676 glUniform1f(gridLoc6, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2677 glUniform1f(gammaLoc, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2678 GLint alphamodeLoc5 = glGetUniformLocation(shaders[fsquad], "alphamode");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2679 glUniform1f(alphamodeLoc5, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2680
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2681 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2682 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2683 glUniform1f(timeLoc5, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2684 glUniform1f(alphaLoc5, 0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2685
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2686 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2687 glBindTexture(GL_TEXTURE_2D, textures[tex_aegis]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2688
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2689 GLint location5 = glGetUniformLocation(shaders[fsquad], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2690 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2691
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2692 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2693
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2694 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2695
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2696 int i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2697 int j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2698 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2699 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2700 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2701 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2702 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2703 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2704
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2705 //
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2706 if (mymillis > 2500) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2707 int plussati = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2708 if (mymillis > 2800)plussati=400;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2709 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2710 glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2711 int lloff = (int)(((plussati+mymillis)-2500)*0.0025);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2712 if (lloff >= 4) lloff = 4;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2713 widthLoc5 = glGetUniformLocation(shaders[fsquad], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2714 heightLoc5 = glGetUniformLocation(shaders[fsquad], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2715 timeLoc5 = glGetUniformLocation(shaders[fsquad], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2716 alphaLoc5 = glGetUniformLocation(shaders[fsquad], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2717 float alphamodeLoc = glGetUniformLocation(shaders[fsquad], "alphamode");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2718
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2719 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2720 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2721 glUniform1f(timeLoc5, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2722 glUniform1f(alphaLoc5, 1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2723 glUniform1f(alphamodeLoc, 1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2724
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2725 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2726 glBindTexture(GL_TEXTURE_2D, textures[tex_ll1+lloff]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2727
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2728 GLint location5 = glGetUniformLocation(shaders[fsquad], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2729 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2730
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2731 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2732
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2733 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2734
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2735 int i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2736 int j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2737 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2738 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2739 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2740 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2741 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2742 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2743
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2744 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2745
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2746 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2747
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2748 int majic_texnum = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2749 int noclearframes = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2750 void EyeScene()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2751 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2752 int i, j;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2753
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2754 int lisuri = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2755
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2756 //printf("millis:%f\n",millis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2757 if (millis > 225200) lisuri = 50000+(millis-225200)*0.5;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2758 if (lisuri > 150000) lisuri = 150000;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2759
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2760 float mymillis = (((millis)-scene_start_millis)*100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2761 float mymillis2 = (((millis+lisuri)-scene_start_millis)*100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2762 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb); // fbo
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2763
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2764 glClearColor((float)(scene_shader_params[1]/127)*0.7,(float)(scene_shader_params[1]/127)*0.4,(float)(scene_shader_params[1]/127)*0.8,0.9-0.005*(float)(scene_shader_params[1]/127));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2765
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2766 if ((scene_shader_params[0] == 65 && scene_shader_param_type[0] == 0) || noclearframes > 200)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2767 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2768 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2769 beatmode = -beatmode;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2770 noclearframes = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2771 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2772 else
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2773 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2774 noclearframes++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2775 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2776
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2777 // render fbo copy to fbo
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2778 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2779 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2780 glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_DST_COLOR);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2781
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2782 glUseProgram(shaders[eye_post]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2783
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2784 // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2785
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2786 GLint widthLoc3 = glGetUniformLocation(shaders[eye_post], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2787 GLint heightLoc3 = glGetUniformLocation(shaders[eye_post], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2788 GLint timeLoc3 = glGetUniformLocation(shaders[eye_post], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2789
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2790 glUniform1f(widthLoc3, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2791 glUniform1f(heightLoc3, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2792 glUniform1f(timeLoc3, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2793
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2794 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2795 glBindTexture(GL_TEXTURE_2D, fb_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2796
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2797 GLint location3 = glGetUniformLocation(shaders[eye_post], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2798 glUniform1i(location3, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2799
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2800 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2801
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2802 glRotatef(45,0.0,0.0,1.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2803 glTranslatef(-1.2, -1.0, 0.0+(tan(mymillis*0.00001)*0.1)*(millis-155520)*0.0001);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2804
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2805 i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2806 j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2807 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2808 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2809 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2810 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2811 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2812 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2813
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2814 // render eye
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2815
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2816 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2817 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2818 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2819
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2820 glUseProgram(shaders[eye]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2821
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2822 GLfloat waveTime = 1+atan(mymillis*0.0001)*0.1,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2823 waveWidth = cos(mymillis*0.000001)*1000+atan(mymillis*0.00001)*2.0,
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2824 waveHeight = sin(mymillis*0.0001)*100*atan(mymillis*0.00001)*2.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2825
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2826 GLint waveTimeLoc = glGetUniformLocation(shaders[eye], "waveTime");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2827 GLint waveWidthLoc = glGetUniformLocation(shaders[eye], "waveWidth");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2828 GLint waveHeightLoc = glGetUniformLocation(shaders[eye], "waveHeight");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2829
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2830 GLint widthLoc = glGetUniformLocation(shaders[eye], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2831 GLint heightLoc = glGetUniformLocation(shaders[eye], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2832
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2833 GLint timeLoc = glGetUniformLocation(shaders[eye], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2834
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2835 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2836 glBindTexture(GL_TEXTURE_2D, textures[tex_grayeye]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2837
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2838 GLuint location;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2839 location = glGetUniformLocation(shaders[eye], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2840 glUniform1i(location, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2841
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2842 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2843
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2844 glTranslatef(0.0, 0.0, -150.0+sin(mymillis*0.0000004)*120);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2845 glRotatef(-75.0, 1.0, 0.0, 0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2846 glRotatef(mymillis*0.01, 0.0, 0.0, 1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2847
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2848 glUniform1f(waveTimeLoc, waveTime);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2849 glUniform1f(waveWidthLoc, waveWidth);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2850 glUniform1f(waveHeightLoc, waveHeight);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2851
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2852 glUniform1f(widthLoc, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2853 glUniform1f(heightLoc, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2854
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2855 glUniform1f(timeLoc, mymillis2/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2856
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2857
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2858 int zoom = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2859
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2860 for (zoom = 0; zoom < 8; zoom++)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2861 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2862
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2863 glTranslatef(-0.01, -0.01, -0.1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2864 glRotatef((90*zoom+mymillis*0.01)*0.1, 1.0, 0.0, 0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2865 glRotatef((45*zoom+mymillis*0.01)*0.1, 0.0, 0.0, 1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2866 glRotatef((25*zoom+mymillis*0.01)*0.1, 0.0, 1.0, 0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2867 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2868
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2869 for (i = -50; i < 50; i+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2870 for (j = -50; j < 50; j+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2871 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2872 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2873 glVertex2f(i + 1, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2874 glVertex2f(i + 1, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2875 glVertex2f(i, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2876 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2877 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2878 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2879
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2880 // eye postprocess to screen
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2881
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2882 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2883
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2884 glUseProgram(shaders[eye_post]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2885
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2886 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2887
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2888 glDisable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2889
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2890 GLint widthLoc2 = glGetUniformLocation(shaders[eye_post], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2891 GLint heightLoc2 = glGetUniformLocation(shaders[eye_post], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2892 GLint timeLoc2 = glGetUniformLocation(shaders[eye_post], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2893
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2894 glUniform1f(widthLoc2, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2895 glUniform1f(heightLoc2, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2896 glUniform1f(timeLoc2, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2897
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2898 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2899 glBindTexture(GL_TEXTURE_2D, fb_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2900
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2901 if (scene_shader_params[0] != -1 && scene_shader_param_type[0] == 0)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2902 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2903 room_texnum = (int)(rand() % 3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2904 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2905
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2906 glActiveTexture(GL_TEXTURE1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2907 glBindTexture(GL_TEXTURE_2D, textures[tex_room + room_texnum]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2908
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2909 GLint location2 = glGetUniformLocation(shaders[eye_post], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2910 glUniform1i(location2, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2911
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2912 GLint location4 = glGetUniformLocation(shaders[eye_post], "texture1");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2913 glUniform1i(location4, 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2914
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2915 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2916
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2917 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2918
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2919 i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2920 j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2921 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2922 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2923 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2924 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2925 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2926 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2927
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2928 // text overlay
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2929
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2930 if (beatmode == 1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2931 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2932 glUseProgram(shaders[fsquad]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2933
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2934 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2935 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_SUBTRACT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2936 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_COLOR);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2937
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2938 GLint widthLoc5 = glGetUniformLocation(shaders[fsquad], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2939 GLint heightLoc5 = glGetUniformLocation(shaders[fsquad], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2940 GLint timeLoc5 = glGetUniformLocation(shaders[fsquad], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2941 GLint alphaLoc5 = glGetUniformLocation(shaders[fsquad], "alpha");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2942 GLint alphamodeLoc5 = glGetUniformLocation(shaders[fsquad], "alphamode");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2943 glUniform1f(alphamodeLoc5, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2944
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2945 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2946 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2947 glUniform1f(timeLoc5, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2948 glUniform1f(alphaLoc5, cos(mymillis*0.1)*0.1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2949
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2950 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2951
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2952 majic_texnum = (int)(rand() % 4);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2953
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2954 glBindTexture(GL_TEXTURE_2D, textures[tex_majestic1+majic_texnum]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2955
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2956 GLint location5 = glGetUniformLocation(shaders[fsquad], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2957 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2958
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2959 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2960
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2961 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2962
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2963 i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2964 j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2965 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2966 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2967 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2968 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2969 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2970 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2971 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2972
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2973 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2974
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2975 int redcounter = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2976
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2977 void RedCircleScene()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2978 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2979 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // fbo
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2980
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2981 glUseProgram(shaders[redcircle]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2982 float mymillis = (millis-scene_start_millis)*160;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2983
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2984 glClearColor(0,0,0,0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2985 if (scene_shader_params[2] == 36) { redcounter++; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2986 if (redcounter > 4) { redcounter = 0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2987
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2988 glEnable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2989 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2990 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2991
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2992 GLint widthLoc2 = glGetUniformLocation(shaders[redcircle], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2993 GLint heightLoc2 = glGetUniformLocation(shaders[redcircle], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2994
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2995 glUniform1f(widthLoc2, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2996 glUniform1f(heightLoc2, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2997
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2998 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2999 glBindTexture(GL_TEXTURE_2D, textures[tex_grayeye]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3000
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3001 GLint location2 = glGetUniformLocation(shaders[redcircle], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3002 glUniform1i(location2, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3003
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3004 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3005
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3006 glTranslatef(0.0, 0.0, -90.0-cos(mymillis*0.0000004)*120);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3007 glRotatef(-75.0, 1.0, 0.0, 0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3008 glRotatef(mymillis*0.01, 0.0, 0.0, 1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3009
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3010 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3011
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3012 int i,j;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3013
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3014 for (i = -50; i < 50; i+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3015 for (j = -50; j < 50; j+=10)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3016 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3017
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3018 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3019 glVertex2f(i + 1, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3020 glVertex2f(i + 1, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3021 glVertex2f(i, j + 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3022 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3023 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3024
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3025 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3026
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3027 void VHSPost(float effuon)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3028 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3029 if (current_scene == 6) effuon = 2.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3030 if (current_scene == 7) effuon = 3.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3031 float mymillis = (millis-scene_start_millis);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3032
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3033 if (current_scene == 1 || current_scene == 2)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3034 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3035 if (millis > 105000 && millis < 112000) brieflycase_render();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3036 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3037
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3038 if (current_scene == 1 || current_scene == 3)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3039 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3040 // console crap
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3041 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3042
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3043 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3044
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3045 mat4_set_identity( &projection );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3046 mat4_set_identity( &model );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3047 mat4_set_identity( &view );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3048
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3049 mat4_set_orthographic( &projection, 0, g_Width, 0, g_Height, -1, 1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3050
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3051 console_render( console );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3052 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3053
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3054
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3055 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // default
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3056 glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3057 glClearDepth(1.0f); // Depth Buffer Setup
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3058
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3059 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3060
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3061 glUseProgram(shaders[vhs]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3062
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3063 glDisable(GL_BLEND);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3064 float widthLoc5 = glGetUniformLocation(shaders[vhs], "width");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3065 float heightLoc5 = glGetUniformLocation(shaders[vhs], "height");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3066 float timeLoc5 = glGetUniformLocation(shaders[vhs], "time");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3067 float effuLoc5 = glGetUniformLocation(shaders[vhs], "effu");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3068
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3069 float beatLoc = glGetUniformLocation(shaders[vhs], "beat");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3070 float noiseLoc = glGetUniformLocation(shaders[vhs], "noisetin");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3071
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3072 if ((current_scene == 2 || current_scene == 1 || current_scene == 4) && (millis > 55000 && millis < 186000))
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3073 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3074 if (scene_shader_params[2] == 36) { vhsbeat = 1.0f; vhsbeat_start = mymillis; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3075 vhsbeat-=((mymillis-vhsbeat_start)*0.00005);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3076 if (vhsbeat <= (current_scene == 2 ? 0.2 : 0.1)) vhsbeat = (current_scene == 2 ? 0.2 : 0.1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3077 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3078 else if (current_scene == 3) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3079 if (millis >= 181500 && vhsbeat_start < 181500) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3080 vhsbeat_start = millis;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3081 //printf("START!\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3082 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3083
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3084 if (vhsbeat_start >= 181500)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3085 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3086 vhsbeat = (millis-vhsbeat_start)*(0.02/30);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3087 //printf("vhsbeat:%f\n", vhsbeat);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3088 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3089 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3090 else if (current_scene == 6)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3091 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3092 if (scene_shader_params[2] == 36) { vhsbeat = 1.0f; vhsbeat_start = mymillis; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3093 vhsbeat-=((mymillis-vhsbeat_start)*0.0005);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3094 if (vhsbeat < 0.0) vhsbeat = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3095
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3096 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3097 else{
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3098 vhsbeat = 0.2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3099 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3100
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3101 float vhsnoise = ((float)(scene_shader_params[5]))/255.0f;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3102 float adder = (((float)(scene_shader_params[4]))/255.0f)-(current_scene == 2 ? 0.2 : 0.5f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3103
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3104 if (current_scene == 4) adder = 0.0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3105
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3106 if (current_scene == 7) vhsnoise = 1.0+cos(millis*0.001);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3107
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3108 if (!assets_loaded) vhsnoise=sin(loading_time*0.1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3109
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3110 glUniform1f(widthLoc5, g_Width);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3111 glUniform1f(heightLoc5, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3112 glUniform1f(timeLoc5, mymillis/100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3113 glUniform1f(effuLoc5, effuon);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3114 glUniform1f(beatLoc, vhsbeat+adder);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3115 glUniform1f(noiseLoc, vhsnoise);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3116
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3117 glActiveTexture(GL_TEXTURE0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3118 glBindTexture(GL_TEXTURE_2D, fake_framebuffer_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3119
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3120 float location5 = glGetUniformLocation(shaders[vhs], "texture0");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3121 glUniform1i(location5, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3122
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3123 glLoadIdentity();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3124
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3125 glTranslatef(-1.2, -1.0, -1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3126
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3127 int i=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3128 int j=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3129 glBegin(GL_QUADS);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3130 glVertex2f(i, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3131 glVertex2f(i + 100, j);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3132 glVertex2f(i + 100, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3133 glVertex2f(i, j + 100);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3134 glEnd();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3135
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3136
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3137 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3138
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3139
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3140 ///////////////////////////////////////////////////////////////// END EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3141 ///////////////////////////////////////////////////////////////// END EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3142 ///////////////////////////////////////////////////////////////// END EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3143 ///////////////////////////////////////////////////////////////// END EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3144 ///////////////////////////////////////////////////////////////// END EFFECTS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3145
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3146 // update sync from midi + mapping data
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3147
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3148 void UpdateShaderParams()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3149 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3150 int intmillis = (int)millis;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3151 int i;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3152
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3153
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3154 for (i=0; i < mapping_count; i++)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3155 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3156 int tracknum = mapping_tracknum[i];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3157 int trackidx = timeline_trackindex[tracknum];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3158 if (timeline_trackindex[tracknum] >= timeline_tracklength[tracknum]) continue;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3159
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3160 MIDI_MSG currentMsg = timeline[tracknum][trackidx];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3161
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3162
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3163 int dw = (int)currentMsg.dwAbsPos;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3164 int tarkistus = (int)(dw)*1.212;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3165
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3166 // flush midi to correct position if debugging
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3167 if (debugmode == 1)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3168 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3169 while (tarkistus < intmillis)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3170 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3171 timeline_trackindex[tracknum]++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3172 trackidx = timeline_trackindex[tracknum];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3173 MIDI_MSG currentMsg2 = timeline[tracknum][trackidx];
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3174 dw = (int)currentMsg2.dwAbsPos;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3175 tarkistus = (int)(dw)*1.212;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3176 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3177 printf("DEBUG: midi track %d flushed to position: %d\n", tracknum, tarkistus);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3178 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3179
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3180 // reset trigs
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3181 if (scene_shader_param_type[mapping_paramnum[i]] == 0) scene_shader_params[mapping_paramnum[i]] = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3182
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3183 //if (intmillis+155520 < tarkistus*1.212) break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3184 if (intmillis < tarkistus) continue;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3185
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3186 timeline_trackindex[tracknum]++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3187
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3188 int ev = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3189
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3190 if (currentMsg.bImpliedMsg) { ev = currentMsg.iImpliedMsg; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3191 else { ev = currentMsg.iType; }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3192
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3193 // DebugPrintEvent(ev, currentMsg);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3194
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3195 int trigVal = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3196 int paramVal = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3197
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3198 switch(mapping_type[i])
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3199 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3200 // trig
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3201 case 0:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3202 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3203
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3204 if (ev == msgNoteOn)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3205 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3206 trigVal = currentMsg.MsgData.NoteOn.iNote;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3207 // printf("track #%d (%s), len %d, pos %d: dwAbsPos: %d (millis: %d) -> noteon: %d (shadermap num %d)\n", tracknum, timeline_trackname[tracknum], timeline_tracklength[tracknum], timeline_trackindex[tracknum], currentMsg.dwAbsPos, intmillis, trigVal, mapping_paramnum[i]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3208 // printf("shader param %d trig: %d\n", mapping_paramnum[i], trigVal);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3209 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3210 else if (ev == msgNoteOff)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3211 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3212 trigVal = -1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3213 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3214
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3215 scene_shader_params[mapping_paramnum[i]] = trigVal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3216 scene_shader_param_type[mapping_paramnum[i]] = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3217 //if (ev == msgNoteOn) printf("sync (%s): %d: trig %d to: %f\n", timeline_trackname[tracknum], intmillis, mapping_paramnum[i], scene_shader_params[mapping_paramnum[i]]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3218 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3219 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3220
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3221 // param:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3222 case 1:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3223 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3224 if (ev == msgSetParameter)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3225 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3226 paramVal = currentMsg.MsgData.NoteParameter.iParam;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3227 scene_shader_params[mapping_paramnum[i]] = paramVal;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3228 scene_shader_param_type[mapping_paramnum[i]] = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3229 //printf("sync (%s): %d: param %d to: %d\n", timeline_trackname[tracknum], intmillis, mapping_paramnum[i], scene_shader_params[mapping_paramnum[i]]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3230 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3231
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3232 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3233 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3234 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3235 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3236 debugmode = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3237
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3238 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3239 ///////////////////////////////////////////////////////////////// MAIN LOGIC
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3240
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3241 void quit()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3242 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3243 quitflag = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3244 printf("--- MIDISYS ENGINE: time to quit()\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3245 if(!window) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3246 glutLeaveGameMode();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3247 glutLeaveMainLoop();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3248 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3249 glutDestroyWindow(window);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3250 glutLeaveMainLoop();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3251 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3252 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3253
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3254 double min(double a, double b)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3255 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3256 if (a<=b) return a;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3257 else return b;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3258 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3259
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3260 GLint gFramesPerSecond = 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3261
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3262 void FPS(void) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3263 static GLint Frames = 0; // frames averaged over 1000mS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3264 static GLuint Clock; // [milliSeconds]
42
5770a4c85961 Shut up few warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 41
diff changeset
3265 //static GLuint PreviousClock = 0; // [milliSeconds]
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3266 static GLuint NextClock = 0; // [milliSeconds]
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3267
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3268 ++Frames;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3269 Clock = glutGet(GLUT_ELAPSED_TIME); //has limited resolution, so average over 1000mS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3270 if ( Clock < NextClock ) return;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3271
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3272 gFramesPerSecond = Frames/1; // store the averaged number of frames per second
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3273
42
5770a4c85961 Shut up few warnings.
Matti Hamalainen <ccr@tnsp.org>
parents: 41
diff changeset
3274 //PreviousClock = Clock;
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3275 NextClock = Clock+1000; // 1000mS=1S in the future
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3276 Frames=0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3277 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3278
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3279 void logic()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3280 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3281 if (assets_loaded) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3282 if (music_started == -1) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3283 printf("--- MIDISYS-ENGINE: total loading time: %f\n", loading_time);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3284 printf("--- MIDISYS-ENGINE: demo startup\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3285 BASS_ChannelPlay(music_channel,FALSE); music_started = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3286 if(jump_to) { BASS_ChannelSetPosition(music_channel, jump_to, BASS_POS_BYTE); }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3287 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3288
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3289 QWORD bytepos = BASS_ChannelGetPosition(music_channel, BASS_POS_BYTE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3290 double pos = BASS_ChannelBytes2Seconds(music_channel, bytepos);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3291 millis = (float)pos*1000*demo_speed_x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3292
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3293 if (millis > 367000) quit();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3294
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3295 demo_playlist();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3296 scene_logic[current_scene](0.0f);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3297 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3298 t_loader_d = clock();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3299 //scene_logic[current_scene]((float)((float)(assets_index) / (float)(assets_total)));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3300 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3301
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3302 // glutPostRedisplay();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3303 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3304
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3305 void timer(int value)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3306 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3307 const int desiredFPS=60;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3308 glutTimerFunc(1000/desiredFPS, timer, ++value);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3309
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3310 logic();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3311
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3312 FPS(); //only call once per frame loop to measure FPS
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3313 if (quitflag == 0) glutPostRedisplay();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3314 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3315
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3316
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3317 ///////////////////////////////////////////////////////////// RENDER FUNCTION
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3318
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3319 void display(void)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3320 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3321 UpdateShaderParams();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3322 scene_render[current_scene]();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3323 VHSPost(assets_loaded && current_scene <= 4 ? 1.0 : 0.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3324
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3325 glFlush();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3326 glutSwapBuffers();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3327 frame++;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3328 logic();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3329 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3330
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3331
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3332 // ----------------------------------------------------------------------------
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3333 // ----------------------------------------------------------------------------
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3334
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3335 void keyPress(unsigned char key, int x, int y)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3336 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3337 if (key == 27) quit();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3338 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3339
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3340 void mouseMotion(int button, int state, int x, int y)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3341 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3342 mouseX = x;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3343 mouseY = y;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3344 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3345
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3346 void InitFBO()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3347 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3348 glGenTextures(1, &fb_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3349 glBindTexture(GL_TEXTURE_2D, fb_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3350
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3351 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3352 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3353 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3354 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3355
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3356
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3357 printf("\tframebuffer size: %dx%d\n", g_Width, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3358 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, g_Width, g_Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3359 glGenFramebuffersEXT(1, &fb);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3360 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3361
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3362 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, fb_tex, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3363
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3364 glGenRenderbuffersEXT(1, &depth_rb);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3365 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3366 glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, g_Width, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3367
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3368 glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depth_rb);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3369
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3370 GLenum status;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3371 status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3372 switch(status)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3373 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3374 case GL_FRAMEBUFFER_COMPLETE_EXT:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3375 printf("\tInitFBO() status: GL_FRAMEBUFFER_COMPLETE\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3376 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3377 default:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3378 printf("\tInitFBO() error: status != GL_FRAMEBUFFER_COMPLETE\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3379 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3380 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3381 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3382
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3383 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3384 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3385
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3386
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3387
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3388 glGenTextures(1, &fb_tex2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3389 glBindTexture(GL_TEXTURE_2D, fb_tex2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3390
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3391 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3392 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3393 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3394 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3395
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3396
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3397 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, g_Width, g_Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3398 glGenFramebuffersEXT(1, &fb2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3399 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3400
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3401 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, fb_tex2, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3402
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3403 glGenRenderbuffersEXT(1, &depth_rb2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3404 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3405 glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, g_Width, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3406
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3407 glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depth_rb2);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3408
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3409 status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3410 switch(status)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3411 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3412 case GL_FRAMEBUFFER_COMPLETE_EXT:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3413 printf("\tInitFBO() status: GL_FRAMEBUFFER_COMPLETE\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3414 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3415 default:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3416 printf("\tInitFBO() error: status != GL_FRAMEBUFFER_COMPLETE\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3417 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3418 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3419 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3420
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3421 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3422 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3423
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3424 //----------
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3425
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3426 glGenTextures(1, &fake_framebuffer_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3427 glBindTexture(GL_TEXTURE_2D, fake_framebuffer_tex);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3428
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3429 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3430 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3431 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3432 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3433
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3434
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3435 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, g_Width, g_Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3436 glGenFramebuffersEXT(1, &fake_framebuffer);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3437 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fake_framebuffer);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3438
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3439 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, fake_framebuffer_tex, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3440
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3441 glGenRenderbuffersEXT(1, &depth_rb3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3442 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3443 glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, g_Width, g_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3444
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3445 glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depth_rb3);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3446
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3447 glClearColor(0.0,0.0,0.0,1.0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3448 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3449
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3450 status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3451 switch(status)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3452 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3453 case GL_FRAMEBUFFER_COMPLETE_EXT:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3454 printf("\tInitFBO() status: GL_FRAMEBUFFER_COMPLETE\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3455 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3456 default:
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3457 printf("\tInitFBO() error: status != GL_FRAMEBUFFER_COMPLETE\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3458 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3459 break;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3460 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3461
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3462 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3463 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3464
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3465
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3466
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3467 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3468
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3469 void InitGraphics(int argc, char* argv[])
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3470 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3471 fprintf(stdout, "--- MIDISYS ENGINE: InitGraphics()\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3472 glutInit(&argc, argv);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3473
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3474
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3475 if(!window) {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3476 glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3477 // 1280x720, 32bit pixel depth, 60Hz refresh rate
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3478 glutGameModeString( "1280x720:32@60" );
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3479
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3480 // start fullscreen game mode
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3481 glutEnterGameMode();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3482 } else {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3483 window = glutCreateWindow("majestic twelve by bilotrip");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3484 glutReshapeWindow(c_Width, c_Height);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3485 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3486
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3487 glutSetCursor(GLUT_CURSOR_NONE);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3488
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3489 GLenum err = glewInit();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3490 if (GLEW_OK != err)
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3491 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3492 /* Problem: glewInit failed, something is seriously wrong. */
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3493 fprintf(stderr, "\tInitGraphics() error: %s\n", glewGetErrorString(err));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3494 exit(1);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3495 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3496 fprintf(stdout, "\tInitGraphics() status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3497
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3498 glEnable(GL_TEXTURE_2D);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3499
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3500 glShadeModel(GL_SMOOTH);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3501
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3502 #ifdef __APPLE__
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3503 int swap_interval = 1;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3504 CGLContextObj cgl_context = CGLGetCurrentContext();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3505 CGLSetParameter(cgl_context, kCGLCPSwapInterval, &swap_interval);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3506 #endif
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3507
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3508 glutDisplayFunc(display);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3509 glutReshapeFunc(reshape);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3510 glutIdleFunc(logic);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3511 glutKeyboardFunc(keyPress);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3512 glutMouseFunc(mouseMotion);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3513 glutTimerFunc(0,timer,0);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3514
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3515 fprintf(stdout, "--- MIDISYS ENGINE: InitGraphics() success\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3516 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3517
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3518 void StartMainLoop()
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3519 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3520 printf("--- MIDISYS ENGINE: StartMainLoop()\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3521 glutMainLoop();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3522 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3523
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3524 int main(int argc, char* argv[])
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3525 {
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3526 printf("--- MIDISYS ENGINE: bilotrip foundation MIDISYS ENGINE 4.20 - dosing, please wait\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3527
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3528 // init graphics
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3529
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3530 InitGraphics(argc, argv);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3531
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3532 // init console
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3533
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3534 console = console_new();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3535 shader = shader_load("data/shaders/v3f-t2f-c4f.vert",
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3536 shaderss[0]);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3537
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3538 // load & init video
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3539
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3540 printf("--- nu laddar vi en videofilmen, det aer jaetteroligt att fuska poe Assembly\n");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3541
3
acfb339ab87d Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
3542 static const char *videofile = "data/video/video.ogg";
acfb339ab87d Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
3543 OggPlayer ogg(videofile,AF_S16,2,44100,VF_BGRA);
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3544 if(ogg.fail()) {
3
acfb339ab87d Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
3545 printf("could not open video file \"%s\"\n", videofile);
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3546 return -2;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3547 }
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3548 YUVFrame yuv_frame(ogg);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3549 myVideoFrame = &yuv_frame;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3550
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3551 // init MIDI sync and audio
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3552
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3553 LoadMIDIEventList("data/music/midicontrols_final.mid");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3554 ParseMIDITimeline("data/music/mapping.txt");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3555 InitAudio("data/music/UusiArtistiNimi_-_The_March_compoVersion.mp3");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3556
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3557 // Loader assets
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3558
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3559 bilothorn = Import3DFromFile("data/models/bilotrip_logo_thorn.3ds");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3560 LoadGLTextures(bilothorn);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3561 biloflat = Import3DFromFile("data/models/bilotrip_logo_flat.obj");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3562 LoadGLTextures(biloflat);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3563 bilothree = Import3DFromFile("data/models/bilotrip.3ds");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3564 LoadGLTextures(bilothree);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3565 bilotetra = Import3DFromFile("data/models/bilotrip_logo_tetra.obj");
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3566 LoadGLTextures(bilotetra);
33
de2ee75a142f Fix case.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
3567 brieflycase = Import3DFromFile("data/models/brieflyCase.obj");
0
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3568 LoadGLTextures(brieflycase);
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3569
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3570 // start mainloop
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3571
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3572 StartMainLoop();
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3573
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3574 return 0;
785057719d9b Import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3575 }