OpenGL笔记十九之相机系统

OpenGL笔记十九之相机系统

—— 2024-10-02 晚上

bilibili赵新政老师的教程看后笔记

code review!

文章目录

  • OpenGL笔记十九之相机系统
    • 1.运行
      • 1.1.游戏相机
      • 1.2.轨迹球相机
    • 2.游戏相机与轨迹球相机切换
    • 3.博主笔记本要运行需要更改的文件
      • 更改1:28_OpenGL_CameraSystem/application/Application.cpp
      • 更改2:28_OpenGL_CameraSystem/application/CMakeLists.txt
      • 更改3:28_OpenGL_CameraSystem/assets/shaders/fragment.glsl
      • 更改4:28_OpenGL_CameraSystem/assets/shaders/vertex.glsl
      • 更改5:28_OpenGL_CameraSystem/CMakeLists.txt
      • 更改6:28_OpenGL_CameraSystem/main.cpp

1.运行

1.1.游戏相机

鼠标右键按住可控制旋转
在这里插入图片描述

1.2.轨迹球相机

在这里插入图片描述

2.游戏相机与轨迹球相机切换

注意代码文件中是拼写错误的GameCameraControl.h,应该是小写g

#include "application/camera/trackBallCameraControl.h"
#include "application/camera/gameCameraControl.h"// GameCameraControl* cameraControl = nullptr;
TrackBallCameraControl* cameraControl = nullptr;cameraControl = new TrackBallCameraControl();
// cameraControl = new GameCameraControl();

3.博主笔记本要运行需要更改的文件

Files 28_OpenGL_CameraSystem/application/Application.cpp and diff_temp/28_OpenGL_CameraSystem/application/Application.cpp differ
Files 28_OpenGL_CameraSystem/application/CMakeLists.txt and diff_temp/28_OpenGL_CameraSystem/application/CMakeLists.txt differ
Files 28_OpenGL_CameraSystem/assets/shaders/fragment.glsl and diff_temp/28_OpenGL_CameraSystem/assets/shaders/fragment.glsl differ
Files 28_OpenGL_CameraSystem/assets/shaders/vertex.glsl and diff_temp/28_OpenGL_CameraSystem/assets/shaders/vertex.glsl differ
Files 28_OpenGL_CameraSystem/CMakeLists.txt and diff_temp/28_OpenGL_CameraSystem/CMakeLists.txt differ

更改1:28_OpenGL_CameraSystem/application/Application.cpp

在这里插入图片描述

更改2:28_OpenGL_CameraSystem/application/CMakeLists.txt

在这里插入图片描述

#递归将本文件夹下所有cpp
file(GLOB_RECURSE APP ./  *.cpp)add_library(app ${APP} )target_include_directories(app PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(app PRIVATE glfw)

更改3:28_OpenGL_CameraSystem/assets/shaders/fragment.glsl

在这里插入图片描述

更改4:28_OpenGL_CameraSystem/assets/shaders/vertex.glsl

在这里插入图片描述

更改5:28_OpenGL_CameraSystem/CMakeLists.txt

在这里插入图片描述

# 指定 CMake 最低版本
cmake_minimum_required(VERSION 3.12)
add_definitions (-DDEBUG)# 项目名称
project(OpenGL_Lecture)# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)file(GLOB ASSETS "./assets" )file(COPY ${ASSETS} DESTINATION ${CMAKE_BINARY_DIR})# 包含头文件目录
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/thirdParty/include/usr/include
)# 包含库文件目录
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/thirdParty/lib/usr/lib/x86_64-linux-gnu
)# 设置 CMAKE_PREFIX_PATH 以找到 GLFW
set(CMAKE_PREFIX_PATH "/usr/local/lib/cmake/glfw3")
set(GLFW_DIR "/usr/local/lib/cmake/glfw3")# 查找 GLFW3 库
find_package(glfw3 REQUIRED CONFIG)add_subdirectory(wrapper)
add_subdirectory(application)
add_subdirectory(glframework)# 添加可执行文件
add_executable(openglStudy "main.cpp" "glad.c")# 链接库
target_link_libraries(openglStudy glfw wrapper app fw)

更改6:28_OpenGL_CameraSystem/main.cpp

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言文件操作(下)(28)

文章目录 前言一、文件的打开和关闭打开打开模式相对路径和绝对路径 关闭 二、文件操作正确流程三、文件顺序读写函数fopenfclosefputcfgetcfputsfgetsfprintffscanfsprintfsscanffwritefread 四、文件随机读写函数fseekftellrewind 五、文件读取结束时候的判断feofferror具体例…

高级 Java Redis 客户端 有哪些?

高级Java Redis客户端主要包括以下几种: 1. Redisson (https://github.com/redisson/redisson) 特点:Redisson是一个在Redis的基础上实现的Java驻留数据网格(In-Memory Data Grid)。它不仅是一个Redis的J…

4个顶级的大模型推理引擎

LLM 在文本生成应用中表现出色,例如具有高理解度和流畅度的聊天和代码完成模型。然而,它们的庞大规模也给推理带来了挑战。基本推理速度很慢,因为 LLM 会逐个生成文本标记,需要对每个下一个标记进行重复调用。随着输入序列的增长&…

什么是 Tammann temperature

Tammann temperature (Tt_tt​) 是材料科学中一个重要的概念,它通常用于描述材料的热力学特性和相变行为。其定义与玻璃态和晶态材料的内部原子运动相关。Tammann 温度在研究材料的扩散、再结晶、以及玻璃化转变过程中具有重要意义。 1. Tammann 温度的定义 Tamma…

【AIGC】2022-NIPS-视频扩散模型

2022-NIPS-Video Diffusion Models 视频扩散模型摘要1. 引言2. 背景3. 视频扩散模型3.1. 重建引导采样以改进条件生成 4. 实验4.1. 无条件视频建模4.2. 视频预测4.3. 文本条件视频生成4.3.1 视频与图像建模的联合训练4.3.2 无分类器指导的效果4.3.3 更长序列的自回归视频扩展 5…

06.useEffect

在 React 开发中,正确使用 useEffect 钩子对于优化组件性能至关重要。一个常见但容易被忽视的性能问题是在依赖数组中使用对象作为依赖项。这可能导致不必要的效果重新执行,从而影响应用性能。通过优先使用原始值(如字符串、数字)作为依赖项,我们可以显著提高组件的效率。…

【多线程】详解 CAS 机制

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. CAS 是什么1.1 CAS 具体步骤1.2 CAS 伪代码 2. CAS 的应用2.1 实现原子类2.1.1 AtomInteger 类2.1.2 伪代…

word无法复制粘贴

word无法复制粘贴 使用word时复制粘贴报错 如下: 报错:运行时错误‘53’,文件未找到:MathPage.WLL 这是mathtype导致的。 解决方法 1)在mathtype下载目录下找到"\MathType\MathPage\64"下的"mathpa…

Qt开发第一讲

一、Qt项目里面有什么? 对各个文件的解释: Empty.pro文件 QT core gui # 要引入的Qt模块,后面学习到一些内容的时候可能会修改这里 #这个文件相当于Linux里面的makefile文件。makefile其实是一个非常古老的技术了。 #qmake搭配.pr…

C++之模版进阶篇

目录 前言 1.非类型模版参数 2.模版的特化 2.1概念 2.2函数模版特化 2.3 类模板特化 2.3.1 全特化和偏特化 2.3.2类模版特化应用实例 3.模版分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决方法 4. 模板总结 结束语 前言 在模版初阶我们学习了函数模版和类…

Redis Stack十部曲之五:管理Redis

文章目录 安全ACLTLS 配置redis.conf配置文件通过命令行传递参数动态修改Redis配置Redis作为缓存使用 Redis SentinelRedis Sentinel像一个分布式系统运行Redis Sentinel配置Redis Sentinelquorum参数其它Sentinel 选项 Redis Sentinel部署模式探索ASCII 图示说明模式1&#xf…

【MySQL】Ubuntu环境下MySQL的安装与卸载

目录 1.MYSQL的安装 2.MySQL的登录 3.MYSQL的卸载 4.设置配置文件 1.MYSQL的安装 首先我们要看看我们环境里面有没有已经安装好的MySQL 我们发现是默认是没有的。 我们还可以通过下面这个命令来确认有没有mysql的安装包 首先我们得知道我们当前的系统版本是什么 lsb_…

你还在为教学资料转换烦恼吗?4款神器安利给你,PDF转JPG一键搞定

工作或者学习的时候,我们经常得把PDF文件转换成JPG图片。可能是因为在手机上看起来方便,或者是想放到PPT里展示,反正把PDF转JPG的情况挺多的。那有什么好用的软件能做这个转换呢?今天我就给你们介绍几个好用的。 1. 福昕PDF高质量…

在远程非桌面版Ubuntu中使用Qt5构建Hello World项目

在 Linux 下运行 Qt 应用程序,需要完成以下几个步骤,包括安装 Qt 工具、设置开发环境以及编译和运行项目。下面是详细的步骤: 1. 安装 Qt 1.1使用系统包管理器 sudo apt update 和 sudo apt install qt5-default qtcreator 命令用于更新 U…

儿童需要学习C++多久才能参加信息学奥赛的CSP-J比赛?

信息学奥赛(NOI)是国内编程竞赛领域的顶尖赛事,而对于初学者来说,参加NOI的第一步通常是通过CSP-J(全国青少年信息学奥林匹克联赛初赛),这也是面向青少年程序员的入门级竞赛。作为信息学奥赛的基…

【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:

使用git clone 时报错unable to access xxx: SSL certificate problem: 这个报错通常是由于SSL证书问题引起的。通常可以按照以下步骤进行排查: 检查网络连接:确保你的网络连接正常,可以访问互联网。尝试使用其他网站或工具测试网络连接是否正…

基于SpringBoot vue3 的山西文旅网java网页设计与实现

博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆…

React生命周期以及Hook

React生命周期可概括为以下关键阶段(针对类组件,函数组件主要通过Hooks实现类似功能): 挂载(Mounting): constructor:初始化state和绑定事件处理函数。 render:返回组件的…

Element-UI Plus 暗黑主题切换及自定义主题色

1. 暗黑主题切换 在main.js中引入下面文件 import element-plus/theme-chalk/dark/css-vars.css安装 vueuse/core pnpm add vueuse/coreApp.vue 添加下面代码 使用了 useDark() 的页面才会从 localStorage中读取当前主题状态,否则,刷新页面就会恢复默…

LeetCode讲解篇之1043. 分隔数组以得到最大和

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 对于这题我们这么考虑,我们选择以数字的第i个元素做为分隔子数组的右边界,我们需要计算当前分隔子数组的长度为多少时能让数组[0, i]进行分隔数组的和最大 我们用数组f表示[0, i)区间内的…