OpenGL“分段错误”错误
问题描述:
我一直在玩OpenGL和Ubuntu,似乎我遇到了错误。OpenGL“分段错误”错误
我试图按照其他线程具有完全相同的问题。
简单地说,我也没有工作......
这是我的错误:
Segmentation fault (core dumped)
我编译使用这种 “build.sh” 脚本
g++ -o exec main.cpp -I/usr/include/libdrm -lglfw -I/usr/include/libdrm -lGL -I/usr/include/libdrm -lGLEW -lGLU -lGL
而且程序这里是我的“main.cpp”
#include <GL/glew.h>
#include <GLFW/glfw3.h>
int main(){
if(!glfwInit()){
//error
}
glewExperimental = GL_TRUE;
glewInit();
GLFWwindow* window = glfwCreateWindow(640, 480, "Title", NULL, NULL);
if(!window){
//error
}
glfwMakeContextCurrent(window);
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
float vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
unsigned int VBO;
glGenBuffers(1, &VBO);
while(!glfwWindowShouldClose(window)){
glfwPollEvents();
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
}
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
编辑: 问题已解决。 对于任何人跟我一样,你需要调用makeContextCurrent后glewInit()()
答
这是很简单的,我只是需要把
glewExperimental = GL-TRUE;
glewInit();
在调试器中glfwMakeContextCurrent()
运行它后看哪条线路导致问题。 – Basya
只是一个简单的问题 - 你是在嵌入式还是其他异常的环境下(比如无符号整数的大小可能小于32位)。 (现在不太可能,但你永远不知道....) – Basya
我正在运行64位Ubuntu。问题行是glGenBuffers(1,&VBO) – 64humans