获取简单的输入和渲染窗口(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_BIT和GL_STENCIL_BUFFER_BIT。
glClearColor(0.5f, 0.5f, 0.5f, 1.0f); glClear(GL_COLOR_BUFFER_BIT);
注意,除了glClear之外,我们还调用了glClearColor来设置清空屏幕所用的颜色。当调用glClear函数,清除颜色缓冲之后,整个颜色缓冲都会被填充为glClearColor里所设置的颜色。在这里,我们将屏幕设置为了类似黑板的深蓝绿色。其中glClearColor为状态设置函数,glClear为状态应用函数。
产生的效果如下: