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
      ·
      1 year ago

      Try compiling GLFW from source against GLX instead of EGL. If glxinfo is talking to a software implementation running on your system, I'd expect GLFW built to use GLX would use the same implementation on your computer.

        • e0qdk@kbin.social
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          1 year ago
          • 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