Allegro.cc - Online Community

Allegro.cc Forums » Programming Questions » Bad AllegroGL Examples?

This thread is locked; no one can reply to it. rss feed Print
Bad AllegroGL Examples?
Michael Jensen
Member #2,870
October 2002
avatar

Ok, so I have AllegroGL installed and working with GCC, I use

gcc in.cpp -mwindows -O2 -Wall -oout.exe -lagl -lalleg -luser32 -lgdi32 -lopengl32 -lglu32

To compile the examples, and they all work... but when I try to compile:

1#include <allegro.h>
2#include <alleggl.h>
3 
4volatile int Time = 0;
5void TimerFunc()
6{
7 Time++;
8}
9END_OF_FUNCTION(TimerFunc);
10 
11void Init()
12{
13 allegro_init();
14 install_allegro_gl();
15 install_keyboard();
16 install_timer();
17
18 set_gfx_mode(GFX_OPENGL_WINDOWED, 640, 480, 0, 0);
19
20 glClearColor(0.0, 0.0, 0.0, 0.0);
21}
22 
23int main()
24{
25 Init();
26
27 float x = 0.0, y = 0.5;
28
29 LOCK_VARIABLE(Time);
30 LOCK_FUNCTION(TimerFunc);
31
32 install_int_ex(TimerFunc, BPS_TO_TIMER(60));
33
34 while(!key[KEY_ESC])
35 {
36 while(Time > 0)
37 {
38 poll_keyboard();
39 if(key[KEY_UP]) y += 0.01;
40 if(key[KEY_DOWN]) y -= 0.01;
41 if(key[KEY_RIGHT]) x += 0.01;
42 if(key[KEY_LEFT]) x -= 0.01;
43
44 glClear(GL_COLOR_BUFFER_BIT);
45 glBegin(GL_LINES);
46 glColor3f(1.0, 0.0, 0.0);
47 glVertex2f(0.0, 0.0);
48 glVertex2f(x, y);
49 glColor3f(0.0, 1.0, 0.0);
50 glVertex2f(0.0, 0.0);
51 glVertex2f(-x, y);
52 glColor3f(0.0, 0.0, 1.0);
53 glVertex2f(0.0, 0.0);
54 glVertex2f(x, -y);
55 glColor3f(0.0, 1.0, 1.0);
56 glVertex2f(0.0, 0.0);
57 glVertex2f(-x, -y);
58 glEnd();
59 glFlush();
60
61 Time--;
62 }
63 }
64
65 return 0;
66}
67END_OF_MAIN();

I get an exe file that doesn't do anything except wait for me to press ESC -- I don't even get a blank window that pops up -- I tried
GFX_OPENGL_WINDOWED
GFX_OPENGL_FULLSCREEN
and just plain
GFX_OPENGL

none of them work :-(

Is there something the author screwed up on? -- none of the tutorials in his series (this is like #3) work for me -- they all just run and wait for me press esc or another key (some of the examples just exit on keypress) and then they quit.

The examples are here: Some old pixelate article?

Any ideas?

Edit: Here's another one that doesn't work: (No window even opens up or anything.)

1#include <allegro.h>
2#include <alleggl.h>
3 
4void Init()
5{
6 allegro_init();
7 install_allegro_gl();
8 install_keyboard();
9
10 set_gfx_mode(GFX_OPENGL_WINDOWED, 640, 480, 0, 0);
11 
12 glClearColor(0.0, 0.0, 0.0, 0.0);
13}
14 
15int main()
16{
17 Init();
18 glClear(GL_COLOR_BUFFER_BIT);
19 readkey();
20 
21 return 0;
22}
23END_OF_MAIN();

---------------------------------------
edit:

OK, so I dug into one of the example files, and changed the demo to do this:

1#include <allegro.h>
2#include <alleggl.h>
3 
4int Width = 640;
5int Height = 480;
6int BPP = 32;
7int FullScreen = false;
8 
9 
10volatile int Time = 0;
11void TimerFunc()
12{
13 Time++;
14}
15END_OF_FUNCTION(TimerFunc);
16 
17int ChangeVideoMode(int width, int height, int bpp, int fullscreen)
18{
19 allegro_gl_clear_settings();
20 allegro_gl_set (AGL_COLOR_DEPTH, bpp);
21 allegro_gl_set (AGL_Z_DEPTH, 24);
22 allegro_gl_set (AGL_FULLSCREEN, fullscreen);
23 allegro_gl_set (AGL_DOUBLEBUFFER, 1);
24
25 int suggest = AGL_COLOR_DEPTH | AGL_Z_DEPTH | AGL_DOUBLEBUFFER;
26 if (fullscreen)
27 { suggest |= AGL_FULLSCREEN; }
28 
29 allegro_gl_set (AGL_SUGGEST, suggest);
30 
31 int driver = GFX_OPENGL_WINDOWED;
32 if (fullscreen){driver = GFX_OPENGL_FULLSCREEN;}
33 
34 int r = set_gfx_mode(driver, width, height, 0, 0);
35 if (r)
36 {
37 allegro_message ("Error setting OpenGL graphics mode:\n%s\n"
38 "Allegro GL error : %s\n",
39 allegro_error, allegro_gl_error);
40 }
41 return r;
42}
43 
44 
45int Init()
46{
47 allegro_init();
48 install_allegro_gl();
49 install_keyboard();
50 install_timer();
51
52 if (ChangeVideoMode(Width, Height, BPP, FullScreen))
53 { return 1; }
54 
55 glClearColor(0.0, 0.0, 0.0, 0.0);
56 
57 return 0;
58}
59 
60int main()
61{
62 int r=Init();
63 if (r){return r;}
64
65 float x = 0.0, y = 0.5, z = -1;
66 float rot = 0;
67
68 LOCK_VARIABLE(Time);
69 LOCK_FUNCTION(TimerFunc);
70
71 install_int_ex(TimerFunc, BPS_TO_TIMER(60));
72
73 int Quitting=false;
74 while(!Quitting)
75 {
76 if (key[KEY_ESC]){Quitting=true;}
77 if (key[KEY_F10])
78 {
79 FullScreen = !FullScreen;
80 if (ChangeVideoMode(Width, Height, BPP, FullScreen))
81 { return 1; }
82 
83 while(key[KEY_F10]);
84 Time = 0;
85 }
86 
87 int skip=0;
88 int max_skip = 5;
89 
90 while(Time > 0)
91 {
92 if(key[KEY_UP]) y += 0.01;
93 if(key[KEY_DOWN]) y -= 0.01;
94 if(key[KEY_RIGHT]) x += 0.01;
95 if(key[KEY_LEFT]) x -= 0.01;
96 
97 if ((key[KEY_LSHIFT]) || (key[KEY_RSHIFT]))
98 {
99 if(key[KEY_MINUS_PAD]) z-=.01;
100 if(key[KEY_PLUS_PAD]) z+=.01;
101 }
102 else
103 {
104 if(key[KEY_MINUS_PAD]) rot-=1;
105 if(key[KEY_PLUS_PAD]) rot+=1;
106 }
107
108 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
109 
110 glLoadIdentity();
111 glRotatef(rot, 1, 0, 0);
112 
113 glBegin(GL_LINES);
114 glColor3f(1.0, 0.0, 0.0);
115 glVertex3f(0.0, 0.0, 0.0);
116 glVertex3f(x, y, z);
117 glColor3f(0.0, 1.0, 0.0);
118 glVertex3f(0.0, 0.0, 0.0);
119 glVertex3f(-x, y, z);
120 glColor3f(0.0, 0.0, 1.0);
121 glVertex3f(0.0, 0.0, 0.0);
122 glVertex3f(x, -y, z);
123 glColor3f(0.0, 1.0, 1.0);
124 glVertex3f(0.0, 0.0, 0.0);
125 glVertex3f(-x, -y, z);
126 glEnd();
127 glFlush();
128 allegro_gl_flip();
129
130 Time--;
131 skip++;
132 if (skip>=max_skip){Time=0;}
133 }
134 }
135
136 return 0;
137}
138END_OF_MAIN();

it works now.

Go to: