我无法访问某些 openGL 函数

I cannot access some openGL functions

当我尝试通过执行 glGenBuffer() 函数生成缓冲区时 - 没有找到类似的函数。

一些功能仍然有效,而且据我所知大部分都有效,例如以下代码完美运行:

#include <iostream>
#include <GLFW/glfw3.h>
using namespace std;

class Window_Manager
{
public:
    GLFWwindow* window;

    int Create_Window(int width, int height, const char* title) {
        if (!glfwInit()) {
            return -1;
        }

        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
        glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
        glfwWindowHint(GLFW_FOCUSED, GL_TRUE);
        
        window = glfwCreateWindow(width, height, title, NULL, NULL);
        if (window == NULL) {
            cout << "Failed to create a window! Aborting early..." << endl;
            Terminate_Window(window);
            return -1;
        }
        glfwMakeContextCurrent(window);
        
        glViewport(0, 0, width, height); 
        
        return 1;
    }
    
    void Terminate_Window(GLFWwindow* window) {
        glfwSetWindowShouldClose(window, GL_TRUE);
        glfwTerminate();
    }
};

但这段代码没有:

#include <GLFW/glfw3.h>
#include <Engine_Manager.h>
#include <iostream>
using namespace std;
class Shape2D
{
    int VBO;
    int Setting_Up(){
            VBO = glGenBuffer();
            return 1;
    }
};

除了如评论中提到的 rpress 将 glGenBuffer 替换为 glGenBuffers(1, &VBO) 之外,OpenGL 是一个奇怪的库,因为您必须动态加载大部分功能。

具体细节因平台而异。例如,在 Windows 上,您可以使用 wglGetProcAddress 获取指向所需函数的指针。

与其手动执行,GLEW is an excellent library for getting OpenGL function pointers easily. Other options are documented on the OpenGL wiki