使用的函数
| 函数接口 | 功能 |
|---|
| glViewport | 规定视口大小 |
| glClearColor | 设置画布清理的颜色 |
| glClear(GL_COLOR_BUFFER_BIT) | 执行画布清理操作 |
| glfwSwapBuffers(window) | 执行双缓存的切换 |
代码
#include <iostream>
#include <glad/glad.h>
#include <GLFW/glfw3.h>
void frameBufferSizeCallBack(GLFWwindow* window, int width, int height)
{
std::cout << "窗体最新大小" << width << "," << height << std::endl;
glViewport(0, 0, width, height);
}
void keyCallBack(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if (key == GLFW_KEY_W)
{
std::cout << "按下了GLFW_KEY_W" << std::endl;
}
std::cout << "按下了:" << key << std::endl;
}
int main() {
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGLLearn", nullptr, nullptr);
glfwMakeContextCurrent(window);
glfwSetFramebufferSizeCallback(window, frameBufferSizeCallBack);
glfwSetKeyCallback(window, keyCallBack);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to init GLAD" << std::endl;
return -1;
}
glViewport(0, 0, 800, 600);
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
}
glfwTerminate();
return 0;
}
运行效果
