2012-08-29 10 views
18

Ich bin auf Linux Mint 13 XFCE. Mein Problem ist, dass, wenn ich laufen im Terminal den Befehl:Warum gibt glGetString (GL_VERSION) anstelle der OpenGL-Version null/null zurück?

glxinfo | grep "OpenGL version" 

bekomme ich folgende Ausgabe:

OpenGL version string: 3.3.0 NVIDIA 295.40 

Aber wenn ich die glGetString(GL_VERSION) in meiner Anwendung laufen dann ist das Ergebnis null. Warum erhält dieser Code nicht die gl_version?

#include <stdio.h> 
#include <GL/glew.h> 
#include <GL/gl.h> 
#include <GL/glu.h> 
#include <GL/glut.h> 
#include <GL/glext.h> 

int main(int argc, char **argv) { 

    glutInit(&argc, argv); 
    glewInit(); 

    printf("OpenGL version supported by this platform (%s): \n", 
     glGetString(GL_VERSION)); 
} 
+3

Qt Creator ist eine IDE und hat sehr wenig btw mit Ihrem Problem zu tun. (Nun, nichts wirklich) – Bart

+1

Sie müssen 'gl.h' oder' glu.h' nicht einschließen, wenn Sie 'glut.h' einschließen – Derek

+0

Gleiche Ursache wie: http://stackoverflow.com/questions/6594214/glgetingegerv-returning-garbage-value –

Antwort

25

glutInit() schafft keine GL context. Sie benötigen einen aktuellen GL-Kontext für glewInit() und glGetString(), um zu funktionieren.

Versuchen Sie folgendes:

#include <GL/glew.h> 
#include <GL/glut.h> 
#include <cstdio> 

int main(int argc, char **argv) 
{ 
    glutInit(&argc, argv); 
    glutCreateWindow("GLUT"); 

    glewInit(); 
    printf("OpenGL version supported by this platform (%s): \n", glGetString(GL_VERSION)); 
} 
+2

Das funktioniert, danke. – lyra42

+2

#include ;) Danke für das Snippet – Christoph

+1

Sind 'glutInitWindowSize' und' glutInitDisplayMode' auch für 'glGetString' verpflichtend? –