2017-08-09 48 views
-2

最近OpenGLとUbuntuで遊んでいて、エラーが発生したようです。OpenGLの "Segmentation fault"エラー

私は、問題とまったく同じことをしている他のスレッドに従おうとしました。

は、簡単に言えば、私は仕事何もしなかった...

これは私のエラーです:

Segmentation fault (core dumped) 

私は

g++ -o exec main.cpp -I/usr/include/libdrm -lglfw -I/usr/include/libdrm -lGL -I/usr/include/libdrm -lGLEW -lGLU -lGL 

この "build.sh" スクリプトを使用してプログラムをコンパイルし、ここに私の "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

glewExperimental = GL-TRUE; glewInit(); 

を配置する必要があり本当に簡単だったし、問題の原因となる行を確認してください。 – Basya

+0

簡単な質問です。組み込み環境やそれ以外では(符号なしのintのサイズが32ビット未満のような)環境にいますか? (むしろ最近はないかもしれませんが... ...) – Basya

+0

64bit Ubuntuを実行しています。そして、問題のある行はglGenBuffers(1、&VBO) – 64humans

答えて

0

のために私がちょうどデバッガでそれを実行しますglfwMakeContextCurrent()

関連する問題