OpenGL学习笔记(2)-- openGL的配置和初步使用

时间:2025-03-30 08:27:58
#define GLFW_DLL #include <glad/> #include <GLFW/> #include <iostream> #include <> // 注意 glad的引用一定要在GLFW之前 using namespace std; // 窗口大小改变时的回调函数 void framebuffer_size_callback(GLFWwindow* window, int width, int height) { glViewport(0, 0, width, height); } // 输入控制 void processInput(GLFWwindow *window) { if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true); } int main() { // 初始glfw,设置版本号为3.3,使用核心模式,应用设置 glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // 创建一个窗口,将窗口的上下文应用到当前的主上下文 GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL); if (window == NULL) { cout << "Failed to create GLFW window" << endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); // 初始化GLAD if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { cout << "Failed to initialize GLAD" << endl; return -1; } // 初始化渲染窗口,及视口ViewPort glViewport(0, 0, 800, 600); // 绑定回调函数 glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); // 准备引擎 // 循环不停的渲染,及渲染循环 while(!glfwWindowShouldClose(window)){ // 检查用户的输入 processInput(window); // 渲染指令 // 清空颜色 glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); // 检查触发事件 glfwPollEvents(); // 应用程序采用着双缓冲模式,一张在前面显示,一张在后面慢慢加载 // Swap交换缓冲,完成立刻刷新 glfwSwapBuffers(window); } // 释放glfw的资源 glfwTerminate(); return 0; }