1. 程式人生 > >獲取簡單的輸入和渲染視窗(Hello Window)

獲取簡單的輸入和渲染視窗(Hello Window)

  我們可以使用GLFW的glfwGetKey方法來為我們繪製的視窗獲取輸入,這個方法返回值表示當前這個按鍵是否被按下。程式碼如下:

void processInput(GLFWwindow *window)
{
    if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}

  使用GLFW_KEY_ESCAPE表示ESC鍵位,其中ESCAPE可以被替換為其它鍵位。當ESC鍵沒有被按下的時候,glfwGetKey的返回值為 GLFW_RELAESE,然後我們使用glfwSetWindowShouldClose方法來關閉我們當前正在渲染的視窗

  接著我們在每個渲染迴圈中呼叫processInput函式,程式碼如下:

while (!glfwWindowShouldClose(window))
{
    //Input
    ProcessInput(window);


    glfwSwapBuffers(window);//交換緩衝區
    glfwPollEvents();  //更新事件 比如視窗的拖拽和移動
}

  執行專案,此時我們可以用ESC鍵來關閉我們渲染的視窗


渲染

  首先,我們渲染相關的程式碼放在渲染迴圈中,確保每次視窗進行渲染我們的程式碼都能起作用。除此以外,我們需要在每次渲染之前清空視窗,否則窗口裡面將顯示上次渲染的內容。這裡可以設定一個顏色來清空螢幕,我們可以通過呼叫glClear函式來清空螢幕的顏色緩衝,它接受一個緩衝位(Buffer Bit)來指定要清空的緩衝,可能的緩衝位有GL_COLOR_BUFFER_BIT

GL_DEPTH_BUFFER_BITGL_STENCIL_BUFFER_BIT。

     glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

   注意,除了glClear之外,我們還呼叫了glClearColor來設定清空螢幕所用的顏色。當呼叫glClear函式,清除顏色緩衝之後,整個顏色緩衝都會被填充為glClearColor裡所設定的顏色。在這裡,我們將螢幕設定為了類似黑板的深藍綠色。其中glClearColor為狀態設定函式,glClear為狀態應用函式。

  產生的效果如下: