2016-07-26 3 views
1

Ich möchte C++ - Programme mit OpenGL mit der C++ OpenGL-Wrapper-Bibliothek oglplus erstellen, aber ich kann keine Programme mit oglplus ausführen, wenn ich bestimmte Oglplus-Objekte die Oglplus deklariere :: MissingFunction Ausnahme wird immer ausgelöst.Deklaration wichtiger OglPlus-Objekte löst die Ausnahme aus oglPlus :: MissingFunction

Mein Betriebssystem ist Archlinux.

Meine Programme kompilieren, aber nicht ausgeführt. Zum Beispiel:

#include <cassert> 
#include <iostream> 

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

#include <oglplus/all.hpp> 

int main() 
{ 
    oglplus::VertexShader vs; 
    return 0; 
} 

Dieses Programm kompiliert, aber wenn ich es laufen, die Ausnahme oglplus :: MissingFunction geworfen wird.

Da meine Programme kompilieren, glaube ich, bedeutet dies, dass ich die notwendigen Pakete installiert habe und die richtigen Bibliotheken verknüpft haben. Ich verstehe einfach nicht, warum die Ausnahme ausgelöst wird. Die Beschreibung der Ausnahmebedingung besagt, dass das Auftreten des Würfels bedeutet, dass einige Zeiger, die zum Aufrufen von OpenGL-Funktionen verwendet werden, nicht initialisiert sind.

Bisher habe ich beobachtet oglplus :: MissingFunction geworfen zu werden, wenn ich Objekte der Typen deklarieren:

  • oglplus :: Vertexshader
  • oglplus :: FragmentShader
  • oglplus :: Programm
  • oglplus :: Programm
  • oglplus :: VertexArray
  • oglplus :: Buffer

Irgendwelche Vorschläge, wie Sie dieses Problem lösen können?

Antwort

2

Bevor Sie OpenGL-Ressourcen verwenden können, müssen Sie einen OpenGL-Kontext erstellen. Dieses Beispiel zeigt, wie ein Zusammenhang mit GLUT einzurichten:

https://github.com/matus-chochlik/oglplus/blob/develop/example/standalone/001_hello_glut_glew.cpp

Im Wesentlichen müssen Sie diesen Teil:

#include <iostream> 

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

#include <oglplus/all.hpp> 

int main(int argc, char* argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); 

    GLint width = 800; 
    GLint height = 150; 

    glutInitWindowSize(width, height); 
    glutInitWindowPosition(100,100); 
    glutCreateWindow("OGLplus+GLUT+GLEW"); 

    if(glewInit() == GLEW_OK) try 
    { 
     // Your code goes here. 

     return 0; 
    } 
    catch(oglplus::Error& err) 
    { 
     std::cerr << "OGLPlus error." << std::endl; 
    } 

    return 1; 
} 
Verwandte Themen