2017-05-05 34 views
1

OpenGLとGLFWでゲームエンジンを書いています。しかし、どういうわけか私の窓を閉めることはできません。私は多くのことを試みましたが、効果はありません。私のコードに何が問題なのですか?ウィンドウが閉じないGLFW

私は間違ったことを見つけることができません。

コード:

int running; 
GLFWwindow* window; 

Window::~Window() 
{ 
    glfwTerminate(); 
} 


Window::Window(int width, int height, const std::string& title) 
: m_width(width), 
m_height(height), 
m_title(title){ 

    glfwInit(); 

    if (!glfwInit()) 

    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); 
    window = glfwCreateWindow(height, width, __FILE__, NULL, NULL); 
    if (!window) { 
     glfwTerminate(); 

    } 

    running = true; 

} 

void Window::MainLoop() 
{ 

    do 
    { 
     glfwMakeContextCurrent(window); 

     glClearColor(0.2f, 0.3f, 0.3f, 1.0f); 
     glClear(GL_COLOR_BUFFER_BIT); 
     glFlush(); 
     glfwPollEvents(); 

     Draw(); 

     glfwSwapBuffers(window); 

    } 

    while(running); 
} 

void Window::Draw() 
{ 

    glBegin(GL_TRIANGLES); 

    glVertex3f(0.0f, 1.0f, 0.0f); 
    glVertex3f(1.0f,-1.0f, 0.0f); 
    glVertex3f(-1.0f,-1.0f, 0.0f); 
    glEnd(); 
} 

ありがとう!

答えて

1

問題はいくつかありますが、決してrunning = falseを設定していないようです。 while(!glfwWindowShouldClose(window) && glfwGetKey(window_, GLFW_KEY_ESCAPE) != GLFW_PRESS);

また、あなたのint runningboolにすることを検討:あなたは、これは動作するはずエスケープを押して、ウィンドウを閉じることができるようにしたい場合は

はまた、このwhile(!glfwWindowShouldClose(window));

ように見えるあなたの中の状態を作ってみましょう。

glfwMakeContextCurrent(window);glClearColor(0.2f, 0.3f, 0.3f, 1.0f);のようなものは、変更したくない場合はループ内にある必要はありません。

OpenGLの詳細については、いくつかの基本的な理解と作業例を得るために、https://learnopengl.com/をお読みください。

+0

よろしくお願い致します。それはofftopicかもしれませんが、__FILE__をtitleに置き換えると、なぜ "" glfwCreateWindowに一致する関数呼び出しがありませんか ""知っていますか? – user6632515

+0

'title.c_str()'を試してください。この関数はC言語の文字列= charの配列(const char *)を想定しています。 – Aldarrion

関連する問題