OpenGL 环境搭建和 hello world 程序(LearnOpenGL P1)

编程入门 行业动态 更新时间:2024-10-27 22:32:24

OpenGL <a href=https://www.elefans.com/category/jswz/34/1771403.html style=环境搭建和 hello world 程序(LearnOpenGL P1)"/>

OpenGL 环境搭建和 hello world 程序(LearnOpenGL P1)

文章目录

    • OpenGL
    • GLFW & CMake
    • 链接到 Hello OpenGL!
    • GLAD
    • 运行测试

OpenGL

什么是 OpenGL,OpenGL 能做什么在此不再赘述

运行 OpenGL 需要准备的有:

  • CMake:用于执行编译
  • VS:我使用的是 Visual Studio 17 2022 版本
  • GLFW:C语言库,用 VS 2022 编译、链接
  • GLAD:OpenGL 的驱动层,同样需要和 VS 编译链接

GLFW & CMake

从 .html 下载 GLFW 的源码

CMake 需要绑定一个 c语言 编译器,这里选择你安装的 VS 版本即可

然后解压 glfw 源码到一个文件夹

在 CMake 中选择 glfw 的源码地址和构建输出目标地址


在下面点击 Configure 和 Generate,就可以编译出 sln 工程了

随后使用 VS 2022 打开 GLFW.sln,生成解决方案,构建即可~

  1. 构建结束后在这个路径找到 glfw3.lib,这就是我们要的 GLFW 库文件了

  1. 回到 glfw 源代码文件夹,这里有个 include 文件夹,也是我们需要关注的文件


为了方便我们的 OpenGL 项目使用,我们找个地方创建一个文件夹,把东西放进去,include 直接复制到文件夹里,再创建一个 lib 文件夹把刚刚的 glfw3.lib 放进去~

链接到 Hello OpenGL!

右键点击我们的项目名称(在解决方案下面)打开属性


在这里添加:

  • 包含目录(对应 include)
  • 库目录(对应 lib)


在这里加上 glfw3.lib 和 opengl32.lib,别把分号忘记掉了

GLAD

GLAD 的开源生成页面在:/

选好这两项,在下面点击生成即可

这就是结果源码,下载下来,把 include 导入即可

需要注意的是,src 不是库,把里面的 glad.c 放在项目里面就可以了

运行测试

然后创建一个 cpp 文件到源文件分类中,导入这两行,没问题就成功了~

实现了base.h & base.cpp,把 OpenGL 的一部分数据解耦出去了,main.cpp 负责调用运行

#include "base.h"/// <summary>
/// 初始化 glfw 并配置参数
/// </summary>
void initGlfw() {glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
}/// <summary>
/// 创建窗口对象, 存放了窗口相关数据
/// </summary>
/// <returns></returns>
GLFWwindow* createWindowObj() {// todoGLFWwindow* window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_LABEL, NULL, NULL);if (window == NULL){std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return (GLFWwindow*)-1;}glfwMakeContextCurrent(window);return window;
}int initGlad() {// todo -> glfwGetProcAddressif (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){std::cout << "Failed to initialize GLAD" << std::endl;return -1;}return 1;
}void initViewport(GLFWwindow* window) {glViewport(0, 0, 800, 600);glfwSetFramebufferSizeCallback(window, [](GLFWwindow* window, int width, int height) {glViewport(0, 0, width, height);});
}void mainThread(GLFWwindow* window) {while (!glfwWindowShouldClose(window)){// 检测输入[](GLFWwindow* window){if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)glfwSetWindowShouldClose(window, true);};// 渲染指令glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);// 检查并调用事件, 交换缓冲glfwSwapBuffers(window);glfwPollEvents();}glfwTerminate();
}

更多推荐

OpenGL 环境搭建和 hello world 程序(LearnOpenGL P1)

本文发布于:2023-12-05 08:38:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1663693.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:环境   程序   OpenGL   world   LearnOpenGL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!