获取简单的输入和渲染窗口(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_BITGL_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为状态应用函数。

  产生的效果如下:

  

 

posted @ 2018-12-30 17:32  むふむふ  阅读(812)  评论(0编辑  收藏  举报