My system reports that im using OpenGL 4.2: https://pastebin.com/uXu3BLxX But when i try to use that OpenGL vesion to write a program with it, it fails, the maximum version i can use for that is OpenGL 2.1, why does that happen?

  • e0qdk@kbin.social
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 年前
    • GLFW is intended to be built with cmake.
    • After unzipping the source, make a build directory, and configure glfw3
    • ^^ I like using ccmake to do this interactively, but you can also just pass flags to cmake if you know what they are
    • You should build with GLFW_USE_WAYLAND and GLFW_USE_OSMESA turned off to get it to try to build against X11.
    • You will probably also want to turn off GLFW_BUILD_DOCS, GLFW_BUILD_EXAMPLES, GLFW_BUILD_TESTS
    • You can adjust CMAKE_INSTALL_PREFIX if you don’t want to use the /usr/local default install path.
    • After generating a Makefile, run make and make install
    • glfw3 generates a pkg-config compatible .pc file as part of its build process that lists flags needed for compilation and linking against the library. Normally, you’d just call pkg-config --cflags --libs --static glfw3 to get this info as part of your own build process (in a Makefile, for example) or else require glfw3 as part of a cmake-based build, but you can read what’s generated in there if that program is not available to you for some reason. In case it’s helpful for comparison, what I get with a custom build of the static library version of glfw3 installed into /usr/local on a slightly old version of Ubuntu is output like -I/usr/local/include -L/usr/local/lib -lglfw -lrt -lm -ldl -lX11 -lpthread -lxcb -lXau -lXdmcp but you may need something different for your particular configuration.

    Basically, something like this, probably, to do the compilation and get the flags to pass to g++:

    wget 'https://github.com/glfw/glfw/releases/download/3.3.8/glfw-3.3.8.zip'
    unzip glfw-3.3.8.zip
    mkdir build
    cd build
    cmake -D GLFW_BUILD_DOCS=OFF -D GLFW_BUILD_EXAMPLES=OFF -D GLFW_BUILD_TESTS=OFF -D GLFW_USE_OSMESA=OFF -D GLFW_USE_WAYLAND=OFF -D GLFW_VULKAN_STATIC=OFF ../glfw-3.3.8
    make
    make install
    
    pkg-config --cflags --libs --static glfw3
    
    

    If you want to just compile a single cpp file after building and install, you can do something like

    g++ main.cpp `pkg-config --cflags --libs --static glfw3` -lGL