Michael Jensen
Member #2,870
October 2002
|
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 | | | 4 | volatile int Time = 0; | | 5 | void TimerFunc() | | 6 | { | | 7 | Time++; | | 8 | } | | 9 | END_OF_FUNCTION(TimerFunc); | | 10 | | | 11 | void 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 | | | 23 | int 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 | } | | 67 | END_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 | | | 4 | void 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 | | | 15 | int main() | | 16 | { | | 17 | Init(); | | 18 | glClear(GL_COLOR_BUFFER_BIT); | | 19 | readkey(); | | 20 | | | 21 | return 0; | | 22 | } | | 23 | END_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 | | | 4 | int Width = 640; | | 5 | int Height = 480; | | 6 | int BPP = 32; | | 7 | int FullScreen = false; | | 8 | | | 9 | | | 10 | volatile int Time = 0; | | 11 | void TimerFunc() | | 12 | { | | 13 | Time++; | | 14 | } | | 15 | END_OF_FUNCTION(TimerFunc); | | 16 | | | 17 | int 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 | | | 45 | int 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 | | | 60 | int 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 | } | | 138 | END_OF_MAIN(); |
it works now.
|