我初始化了GLFW,我可以调用其他gl函数。可以使用OpenGL管道绘制面。但是,在执行glCreateProgram()
时,它会给我这个错误。
错误:
Voxel.exe中0x00000000处抛出异常:0xC0000005:Access 违规执行位置0x00000000。
简化代码:
void error_callback(int error, const char* description)
{
cerr << description << endl;
}
[...]
if (!glfwInit())
{
cout << "Failed to create GLFW3 / OpenGL context";
system("PAUSE");
exit(EXIT_FAILURE);
}
else
cout << "GLFW3 initialized!" << endl;
glfwSetErrorCallback(error_callback);
glFrontFace(GL_CW);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
width = 600;
height = 600;
this->window = glfwCreateWindow(width, height, "voxel", NULL, NULL);
glfwSetWindowSize(this->window, width, height);
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);
if (!this->window)
{
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(this->window);
glfwSwapInterval(0);
cout << "OpenGL version: " << glGetString(GL_VERSION) << endl;
GLuint program = glCreateProgram();
[...]
我不明白,为什么会这样。
答案 0 :(得分:2)
GLFW不会为您加载扩展和现代功能。因此glCreateProgram是未初始化的。
您需要一个实际的扩展加载器。你还要检查glCreateProgram等。实际上是由您的目标系统支持。