#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
void framebuffer_size_callback(GLFWwindow *window, int width, int height); // 窗口大小改变时的回调函数
void processInput(GLFWwindow *window); // 处理输入
const unsigned int SCR_WIDTH = 800; // 窗口宽度
const unsigned int SCR_HEIGHT = 600; // 窗口高度
int main()
{
glfwInit(); // 初始化GLFW
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // 设置主版本号
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); // 设置次版本号
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 设置OpenGL配置文件为核心模式
GLFWwindow *window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL); // 创建窗口
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl; // 创建失败
glfwTerminate(); // 终止GLFW
return -1;
}
glfwMakeContextCurrent(window); // 将窗口的上下文设置为当前线程的主上下文
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); // 设置窗口大小改变时的回调函数
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) // 初始化GLAD
{
std::cout << "Failed to initialize GLAD" << std::endl; // 初始化失败
return -1;
}
while (!glfwWindowShouldClose(window)) // 当窗口没有关闭时
{
glClearColor(0.2f, 0.3f, 0.3f, 1.0f); // 设置清空颜色
glClear(GL_COLOR_BUFFER_BIT); // 清空颜色缓冲
processInput(window); // 处理输入
glfwSwapBuffers(window); // 交换颜色缓冲
glfwPollEvents(); // 检查是否触发事件
}
glfwTerminate(); // 终止GLFW
return 0;
}
void processInput(GLFWwindow *window) // 处理输入
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) // 按下ESC键
glfwSetWindowShouldClose(window, true); // 设置窗口关闭
}
void framebuffer_size_callback(GLFWwindow *window, int width, int height) // 窗口大小改变时的回调函数
{
glViewport(0, 0, width, height); // 设置视口大小
}
openGL学习-1
最新推荐文章于 2024-08-03 16:26:28 发布