我无法访问某些 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。
当我尝试通过执行 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。