![]() |
|
OpenGL forward compatible context initialization |
Tim Spain
Member #12,201
August 2010
|
Salutations! I'm new to Allegro and am trying to use it to create an OpenGL 3+ context. Which works, using the code below: 1#include <GL/gl.h>
2#include <allegro5/allegro.h>
3#include <stdio.h>
4#include <stdlib.h>
5
6int main (int argc, char** argv)
7{
8 if (!al_init())
9 exit(1);
10
11 al_set_new_display_flags( ALLEGRO_WINDOWED |
12 ALLEGRO_OPENGL |
13 ALLEGRO_NOFRAME );
14
15 ALLEGRO_DISPLAY* dpy = al_create_display(1, 1);
16 al_set_new_display_flags(0);
17
18 al_set_new_display_flags( ALLEGRO_WINDOWED
19 | ALLEGRO_OPENGL_3_0
20 /*| ALLEGRO_OPENGL_FORWARD_COMPATIBLE*/ );
21
22 ALLEGRO_DISPLAY* dpy3 = al_create_display(800, 600);
23
24 al_destroy_display(dpy);
25
26 printf("OpenGL version: %s\n", glGetString(GL_VERSION) );
27 printf("GLSL version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION) );
28
29 al_destroy_display(dpy3);
30
31 return 0;
32}
This compiles, links and returns: OpenGL version: 3.0.0 NVIDIA 256.44 GLSL version: 1.30 NVIDIA via Cg compiler However, when I try to initialize a forward compatible context by uncommenting ALLEGRO_OPENGL_FORWARD_COMPATIBLE, the program crashes with the output opengl3.3.exe: /home/tim/ccpp/allegro-4.9.21/src/opengl/extensions.c:153: print_extensions: Assertion `extension' failed. Aborted where the assertion is checking for an empty string of OpenGL extensions. So:
Also, I have two other questions that I wouldn't mind an answer to:
Speaking of which, I am using Allegro 4.9.21 (from sourceforge 2010-08-17), built with GCC 4.3.3 on Ubuntu 9.4 (Jaunty) with the Nvidia 256.44 drivers. Any and all answers are greatly appreciated! |
Peter Wang
Member #23
April 2000
|
The assertion will be because Allegro internally calls glGetString(GL_EXTENSIONS); which is deprecated in OpenGL 3. So you aren't doing anything wrong, it's a bug. You shouldn't need to create two displays either. We'll need to think about the API for requesting later OpenGL versions as well. You're probably the first to try OpenGL 3 support...
|
Tim Spain
Member #12,201
August 2010
|
Thanks for the prompt reply, Peter. It is good to know that I am not doing it wrong... |
|