Bibliothek für Open GL Kontext



  • Hallo Leute!

    Ich suche eine Bibliothek, die mir möglichst einfach ein Fenster erstellt, in dem ich dann mit Open GL zeichnen kann, also einen Open GL Kontext. Idealerweise sollte sie sich auch um auftretende Events kümmern.

    SFML habe ich schon probiert, das buggt bei mir total rum. Nicht mal der Fenstertitel lässt sich setzen, stattdessen krieg ich irgendwelche Random-Zeichen.

    Glut hat das Problem, dass sie der Main-Loop nicht verlassen lässt, stattdessen muss man diese Exit-Funktion aufrufen.

    Irgendwelche Vorschläge?

    Grüße,
    Der Kellerautomat



  • GLFW wär noch eine Alternative. Leider scheint es keine wirklich vernünftige Lösung zu geben, zumindest kenn ich keine...



  • Was du suchst ist GLUT
    http://www.opengl.org/resources/libraries/glut/

    GLUT
    - Macht dir ein Fenster auf
    - Stellt dir einen Render-Loop zur Verfügung
    - Macht Maus/Tastatur IO

    Gruss
    Jochen



  • Vor allem:

    GLUT
    - Ist für C++ unbrauchbar

    Kellerautomat schrieb:

    Glut hat das Problem, dass sie der Main-Loop nicht verlassen lässt, stattdessen muss man diese Exit-Funktion aufrufen.

    freeglut behebt dieses konkrete Problem, hat ansonsten leider genau die gleichen Probleme, wie praktisch all die anderen entsprechenden Libraries auch: Hinter der Kulisse ist alles nur ein einziger globaler State. Wie gesagt: Es scheint keine vernünftige Library dafür zu geben; zumindest hab ich noch immer keine finden können. Und ich hab schon längere Zeit mit der Suche verbracht...

    Ich mach mir meinen Kontext normalerweise einfach selbst...



  • Welcher Version von SFML und welches OS benutzt du? Normalerweise ist SFML ganz stabil. Ansonsten kann ich GLFW empfehlen.

    GLFW is a free, Open Source, multi-platform library for opening a window, creating an OpenGL context and managing input. It is easy to integrate into existing applications and does not lay claim to the main loop.



  • GLFW funktioniert bei mir auch nicht. Ich kann das Programm einfach nicht linken.

    #include <stdexcept>
    
    #include <GL/glfw.h>
    
    struct gl_error : std::runtime_error
    {
    	gl_error(std::string const& what)
    		: runtime_error(what)
    	{}
    };
    
    int main()
    {
    	if(glfwInit() != GL_TRUE)
    		throw gl_error("error initializing glfw");
    
    	glfwTerminate();
    }
    

    1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
    1>GLFW.lib(window.obj) : error LNK2019: unresolved external symbol __imp__glClear@4 referenced in function _glfwOpenWindow
    1>GLFW.lib(win32_window.obj) : error LNK2001: unresolved external symbol __imp__glClear@4
    1>GLFW.lib(win32_window.obj) : error LNK2019: unresolved external symbol __imp__wglCreateContext@4 referenced in function _createContext
    1>GLFW.lib(win32_window.obj) : error LNK2019: unresolved external symbol __imp__wglGetProcAddress@4 referenced in function _initWGLExtensions
    1>GLFW.lib(win32_glext.obj) : error LNK2001: unresolved external symbol __imp__wglGetProcAddress@4
    1>GLFW.lib(win32_window.obj) : error LNK2019: unresolved external symbol __imp__wglMakeCurrent@8 referenced in function _createWindow
    1>GLFW.lib(win32_window.obj) : error LNK2019: unresolved external symbol __imp__wglDeleteContext@4 referenced in function _destroyWindow
    1>GLFW.lib(win32_window.obj) : error LNK2019: unresolved external symbol __imp__glClearColor@16 referenced in function __glfwPlatformSetWindowSize
    1>GLFW.lib(win32_window.obj) : error LNK2019: unresolved external symbol __imp__glGetFloatv@8 referenced in function __glfwPlatformSetWindowSize
    1>GLFW.lib(win32_window.obj) : error LNK2019: unresolved external symbol __imp__glGetIntegerv@8 referenced in function __glfwPlatformSetWindowSize
    1>GLFW.lib(glext.obj) : error LNK2001: unresolved external symbol __imp__glGetIntegerv@8
    1>GLFW.lib(glext.obj) : error LNK2019: unresolved external symbol __imp__glGetString@4 referenced in function __glfwParseGLVersion

    Ich habe die GLFW.lib allerding eingetragen...



  • Kellerautomat schrieb:

    Ich habe die GLFW.lib allerding eingetragen...

    Es fehlen auch nicht die GLFW Funktionen, sondern die OpenGL Funktionen. Probier mal OpenGL32.lib dazu zu linken.



  • Danke, das wars. 🙂


Anmelden zum Antworten