当前位置: 首页 > news >正文

LearnOpenGL01:创建项目

基于LearnOpenGL

相关链接:
工程搭建
hello window

环境

UBUNTU
GLFW3.3:负责创建窗口+处理输入
GLAD:根据不同操作系统加载不同的OPENGL函数实现

安装GLFW以及编译项

sudo apt update
sudo apt install cmake build-essential libglfw3-dev

根据不同版本配置对应的glad

配置链接
选择对应版本 将profile设置为Core以及勾选Generate a loader
点击gennerate会生成对应的zip,下载zip(里面的include和src放到项目目录下)
在这里插入图片描述

创建项目

目录结构
在这里插入图片描述

CMakeLists.txt

cmake_minimum_required(VERSION 3.24)
project(OGLTest)set(CMAKE_CXX_STANDARD 14)include_directories(include)# 查找GLFW库
find_package(PkgConfig REQUIRED)
pkg_search_module(GLFW REQUIRED glfw3)
# 貌似不引入头文件也行
include_directories(${GLFW_INCLUDE_DIRS})# include_directories和add_executable可以二选一
add_executable(OGLTestsrc/main.cpp src/glad.c)target_link_libraries(OGLTest ${GLFW_LIBRARIES})

main.cpp

#include "iostream"// 必须先include glad.h再include glfw
#include "glad/glad.h"
#include <GLFW/glfw3.h>// 窗口变化回调函数
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {glViewport(0, 0, width, height);
}void processInput(GLFWwindow *window)
{// 按esc键就退出if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)glfwSetWindowShouldClose(window, true);
}int main(void) {// 初始化GLFW库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, "LearnOpenGL", NULL, NULL);if (window == nullptr) {std::cout << "failed to create window" << std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);// 注册窗口大小变化回调函数glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);// 调用任何OPENGL函数之前必须初始化GLAD// 给GLAD传入了用来加载系统相关的OpenGL函数指针地址的函数。// GLFW给我们的是glfwGetProcAddress,它根据我们编译的系统定义了正确的函数if (!gladLoadGLLoader((GLADloadproc) glfwGetProcAddress)) {std::cout << "Failed to initialize GLAD" << std::endl;return -1;}// 渲染循环while (!glfwWindowShouldClose(window)) {processInput(window);// 渲染指令// 使用自定义颜色清屏和清空屏幕的颜色缓存glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);// 交换颜色缓冲 : 了解双缓冲glfwSwapBuffers(window);// 检查有没有触发什么事件glfwPollEvents();}// 释放资源glfwTerminate();return 0;
}

知识点

GLAD的头文件必须在GLFW的头文件前面

在这里插入图片描述

窗口的尺寸以及坐标如何映射

在这里插入图片描述

双缓冲

在这里插入图片描述

相关文章:

  • 从逻辑学视角理解统计学在数据挖掘中的作用
  • rust-candle学习笔记10-使用Embedding
  • QT6(35)4.8定时器QTimer 与QElapsedTimer:理论,例题的界面搭建,与功能的代码实现。
  • 请求从发送到页面渲染的全过程
  • vscode 配置doxygen注释和snippet
  • 大模型备案环节如何评估模型的安全性
  • 简易版无人机飞控
  • C++ Dll创建与调用 查看dll函数 MFC 单对话框应用程序(EXE 工程)改为 DLL 工程
  • Spring Boot快速开发:从零开始搭建一个企业级应用
  • 《工业计算机硬件技术支持手册》适用于哪些人群?
  • STM32GPIO输入实战-key按键easy_button库移植
  • ES6新增Set、Map两种数据结构、WeakMap、WeakSet举例说明详细。(含DeepSeek讲解)
  • Qt开发经验 --- 避坑指南(10)
  • 使用Java实现HTTP协议服务:从自定义服务器到内置工具
  • MySQL 8.0(主从复制)
  • 如何删除豆包本地大模型
  • 操纵杆支架加工工艺及钻3φ11孔夹具设计
  • L48.【LeetCode题解】904. 水果成篮
  • 《P1177 【模板】排序》
  • 高质量老年生活:从主动健康管理到预防医学的社会价值
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人
  • 中国一重集团有限公司副总经理陆文俊被查
  • 心相印回应官方旗舰店客服辱骂消费者:正排查
  • 俄罗斯今日将举行“胜利日”阅兵,有何看点?
  • 85后清华博士黄佐财任湖北咸宁市咸安区委副书记、代区长
  • 越秀地产前4个月销售额约411.2亿元,达年度销售目标的34.1%