Why does glGetString(GL_VERSION) return null / zero instead of the OpenGL version?

前端 未结 2 513
隐瞒了意图╮
隐瞒了意图╮ 2020-12-03 10:34

I\'m on Linux Mint 13 XFCE. My problem is that when I run in terminal the command:

glxinfo | grep \"OpenGL version\"

I get the following o

相关标签:
2条回答
  • 2020-12-03 10:51

    glutInit() doesn't create a GL context or make one current. You need a current GL context for glewInit() and glGetString() to work.

    Try this:

    #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));
    }
    
    0 讨论(0)
  • 2020-12-03 11:01

    You can also use glfw in order to create GL context and then query the version:

    Include this files:

    #include "GL/glew.h"
    #include "GLFW/glfw3.h"
    

    And then you can do:

        // Initialise GLFW
        glewExperimental = true; // Needed for core profile
        if (!glfwInit())
        {
            return "";
        }
    
        // We are rendering off-screen, but a window is still needed for the context
        // creation. There are hints that this is no longer needed in GL 3.3, but that
        // windows still wants it. So just in case.
        glfwWindowHint(GLFW_VISIBLE, GL_FALSE); //dont show the window
    
        // Open a window and create its OpenGL context
        GLFWwindow* window;
        window = glfwCreateWindow(100, 100, "Dummy window", NULL, NULL);
        if (window == NULL) {
            return "";
        }
        glfwMakeContextCurrent(window); // Initialize GLEW
        if (glewInit() != GLEW_OK)
        {
            return "";
        }
    
        std::string versionString = std::string((const char*)glGetString(GL_VERSION));
    
    0 讨论(0)
提交回复
热议问题