2017-08-09 184 views
-2

我一直在玩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()()

+1

运行它后看哪条线路导致问题。 – Basya

+0

只是一个简单的问题 - 你是在嵌入式还是其他异常的环境下(比如无符号整数的大小可能小于32位)。 (现在不太可能,但你永远不知道....) – Basya

+0

我正在运行64位Ubuntu。问题行是glGenBuffers(1,&VBO) – 64humans

回答

0

这是很简单的,我只是需要把

glewExperimental = GL-TRUE; 
glewInit(); 

在调试器中glfwMakeContextCurrent()