2017-05-05 12 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));

처럼 보이는 당신의 동안 조건을보십시오 : while(!glfwWindowShouldClose(window) && glfwGetKey(window_, GLFW_KEY_ESCAPE) != GLFW_PRESS);

또한 당신의 int runningbool을 고려한다.

변경하려는 의도가없는 경우 glfwMakeContextCurrent(window);glClearColor(0.2f, 0.3f, 0.3f, 1.0f);과 같은 항목은 루프 내에있을 필요가 없습니다.

OpenGL에 대한 자세한 내용과 기본 이해 및 작업 예제를 보려면 https://learnopengl.com/을 읽어보십시오.

+0

감사합니다. 그것은 offtopic 수 있습니다,하지만 당신은 또한 내가 왜 ""glfwCreateWindow에 일치하는 함수 호출을 얻는 지 알고 있습니까? __FILE__을 제목으로 바꿀 때? – user6632515

+0

'title.c_str()'을 시도하십시오. 함수는 C 타입의 문자열 = char의 배열 (const char *)을 기대한다. – Aldarrion