- 博客(19)
- 收藏
- 关注
原创 Cherno 游戏引擎笔记 (45~60)
》》》》终于开始着色器库的设计,来看看着色器库是用来干嘛的。着色器库的设置是静态的,用于自动加载着色器内容、诊断着色器。高度抽象的设置可以为我们自动化识别接口,使在程序中的调用更加简洁,同时也隐藏了一些细节(自动化处理,不用手动显示设置)》》》》以下是一些设计中的理解:》》在 ShaderLibary 中,使用之前定义的指针 Ref 和 Scope,不需要包含头文件即可使用,为什么。原理:命名空间的作用域在整个程序中都有效,只要命名空间被正确声明和定义,其成员在程序的任何地方都可见。不使用命名空间的话,直接
2024-06-30 14:14:30
720
原创 Cherno 游戏引擎笔记记录(33~45)
》》》 bat语法参考(浏览器打开)windows系统之批处理bat语法 | Winddoing's Notes》》》》@echo off 和 IF %ERRORLEVEL% NEQ 0 ( PAUSE ) 在批处理文件中的意思?@echo off关闭批处理文件的命令回显功能。命令回显是指在批处理文件执行时显示每个命令在命令提示符窗口中的执行结果。作用:这使输出简洁,执行高效。PAUSE代表上一个命令的退出代码(或错误代码)Windows上,程序和命令执行完成后会返回一个退出代码。
2024-06-30 14:01:45
1022
原创 Cherno 游戏引擎笔记 15~33
讲了一些基础,有点晦涩,介于之前看过 OpenGL 教程,也就马马虎虎看完了。涉及的要点可以自己搜索,我建议还是将后面几集做完了回头看。
2024-04-20 15:05:55
639
原创 如何Fork一个仓库的旧版本(在github上)
在自己的学习过程中,真的很需要Fork一个仓库之前的旧版本,于是我产生了这个疑问首先要知道,在github中没有一种快捷方式可以直接用于 Fork 一个仓库的先前版本。一般情况下无论你处于一个仓库的哪一个版本的页面,进行 Fork 操作都是会默认的帮你 Fork 一个最新的仓库到个人仓库目录下,所以我决定自己查证并实现这个方法。fork 一个库的以前的版本这个操作可能会有一些限制和复杂性。
2024-03-20 21:49:11
2450
1
原创 Cherno游戏引擎笔记记录(1~14)
通过将析构函数声明为虚函数,可以确保在删除指向派生类对象的基类指针时,会先调用派生类的析构函数,然后再调用基类的析构函数,从而正确释放派生类所占用的资源。通常情况下,公有继承是最常用的继承方式,因为它能够使派生类获得基类的接口和功能,并且符合面向对象编程的封装性和多态性原则。eg.一个简单的事件分发器的例子是一个图形界面应用程序,当用户点击按钮时,按钮控件会生成一个点击事件,事件分发器接收到该事件后,会将事件分发给注册的按钮点击事件处理函数,从而执行按钮点击后的相应操作,比如显示弹窗、切换界面等。
2024-03-13 21:49:40
482
2
原创 Cherno 游戏引擎GLFW窗口踩坑:error LNK2019: 无法解析的外部符号 _glfwSelectPlatform,函数 glfwInit 中引用了该符号(类似报错)
希望能帮到大家啊,如果有在学的可以多钻研钻研,我也同步了一个Github仓库() ,里面也有自己做的笔记。如果是刚进入Github大家庭的兄弟,点击commit可以查看每一次提交的代码,这样方便对比代码。最后,真的希望能帮助到你!
2024-03-03 22:33:47
2191
4
原创 BeyondCompare关联远程仓库和使用BComp进行对比
(前提是你需要安装Git,并且拥有一个github上的远程仓库)(教程可以在网络上搜索,大概是一直默认,记得第一次使用时初始化。1.逐一打开有差异的文件(会自动打开BComp应用程序并显示)注意自己的BComp.exe路径,注意斜杠和反斜杠混淆。下载得到安装包后运行,一路默认。
2024-02-07 12:15:32
476
1
原创 Git关于Browse.VC.opendb文件报错的解决方法
据查证,这是在项目打开时候自动产生的临时文件 每次打开.sln文件都会重新产生一个新的opendb,在关闭工程的时候,该文件会自动删除。为了避免每一次都弹出一个报错提示框,可以使用.gitignore文件帮我们自动忽略这种文件,然后提交给远程仓库。文件被拒绝访问,可能是因为没有足够的权限来读取或修改该文件。文件路径中斜杠需要更换成"/"而不是"\",注意window文件路径中的斜杠会与转义字符冲突。在.gitignore文件中,每个忽略规则应该占一行,并且不需要使用绝对路径。
2024-01-28 14:35:12
608
原创 D11D12决赛信息实时生成
调试了一下午,不知为什么总是会报错,在将fontshader这个参数注释掉之后(以及函数定义中将要使用fontshader的语句)我发现报错消失,故确定问题出在着色器身上,突发奇想试一下std::ref()没想到成了,至少没再继续报错。(这里有本人自己定义的函数,大概思路就是创建投影矩阵,观察矩阵,模型矩阵,绑定着色器,绑定纹理,传入数据。我决定弃用这个方法,使用更简便的方式完成同样的效果,我仅仅记录本地时间来判断渲染循环是否到达两秒,并为其更替打印信息,在打印信息时,或许我会考虑使用线程呢?
2024-01-28 14:14:18
812
原创 D9D10决赛信息交互+分组文件读入
在阅读任务书后发现,team.txt文件和有决赛室标识的文件其实很相像,分给这些队伍60~100的成绩就是默认了他们都进入决赛,所以我可以给team.txt分一些初赛成绩,然后以有决赛室标识的这个文件为条件后面再去判断。我觉得是可以先写一个脚本,读入team.txt文件,然后依次为每一行队伍分配一个60到100的初赛成绩,读出并保存,然后去使用这个更新后的文件(反正也不影响条件一那些增删查的问题)。所以为了渲染比赛状态,我需要先对进行初赛的队伍分组,生成秩序册之后从中读取文字,用来显示在大屏上。
2023-12-22 01:00:24
1703
原创 D7D8设置地图交互
1.为了方便在if(mes){ }中控制不同的纹理,对应不同的情况。首先我们声明一个布尔变量mes(这个mes变量需要在渲染循环中,通过每一次渲染重复刷新),然后在上一次的轮廓渲染中添加一个储存状态的变量。再renderer.cpp中定义(使用摄像机位置去判断准心是否在标志点之上 ,届时我们会禁用鼠标控制视角,限制在空间中自由移动的能力)本来想使用鼠标触发,但是在前几天的调试中,发现从窗口检测鼠标坐标并不能很好的与窗口内物体匹配。方便起见呢,我将每一个标志点的信息通过截图的方式储存,届时绘制纹理即可。
2023-12-20 23:26:24
395
原创 D5D6改良ImGui
(很大的限制是想要实现在空间中移动位置的前提下,让鼠标与物体互动,但我已知的函数总是记录鼠标与窗口的相对位置,这导致我在设想中总是遇到一个问题:如果物体在世界空间中的位置移动,而鼠标在窗口中的相对位置不发生变化,由函数数据算出来的鼠标对应于空间中的坐标会因此出现偏差。测量了好久,发现摄像机位置和预先中的有偏差,摄像机的位置向量是以原点为起点的,但是我绘制的纹理并不是在原点平面上的,白忙活一阵后我重新记录位置,并绘制标志物。简化函数,使主函数整洁。当鼠标在此范围中时候,我可以绘制轮廓,话不多说,看我操作。
2023-12-19 22:17:04
396
原创 D4项目中ImGui的引入与使用
此处发现在之前的函数设置中,由于使用回调函数来捕捉鼠标用来控制视角移动,如果不禁用这个函数,将会导致鼠标不能正常对Imgui绘制的demo窗口进行操作。接下来,我将学习如何制作一个类似搜索框的控件,并学习怎样更改imgui窗口的设置,做一些更完美的效果,明天我会去完成这些,然后完善函数,并将主函数整理的更加简洁。将该文件夹包括在项目中后,在项目属性中的 c++----常规----附加包含目录中添加“imgui”,之后即可在文件中引入。接下来就是解除了一些控件的绘制函数,并实现了这样的效果。
2023-12-14 22:45:44
119
原创 D3赛场信息展示
如果能够从程序中获取信息,通过imgui选择想要观看的某一场现场比赛,并点击他,窗口能够进行响应。现在我的文本仍旧渲染在地图的窗口中,我需要用类似的方法,使用imgui让用户进行选择:打开地图、打开比赛ob?进入相应的选项卡后,能过实现地图、比赛的各自的操作。接下来的设想是,是否能在有限的时间内学习使用imgui,将其添加到条件二。但地图导航暂时有了雏形,于是我开始考虑赛场信息展示,我决定使用FreeType库实现文本渲染。以上就是问题所在,现在条件二有了一点点眉目,我将在明天继续实现。
2023-12-13 22:34:14
52
原创 D2开始动手
使用glfw库,下载后用cmake生成可用的.lib文件,下载其他要使用的库。同时使用glad库配置工程,将生成的文件包含,并添加glad.c到项目。由于在matrix中使用了C++新特性variant,故要更改C++语言规范为c++ 17,如此一来可以使用variant变量和相关函数std::get()等等。同时监测到之后,将在另一个地方开辟视口,绘制相关地点信息。设置了摄像机系统,顶点缓冲,顶点布局,顶点数组,索引缓冲,矩阵,纹理,渲染器,着色器等一众函数。设置回调函数,控制视角移动,人物移动,缩放。
2023-12-12 22:14:48
42
原创 D1实践任务分析
赛场模拟中,十七个对决信息在循环中反复处理对于现代电脑来讲应该不是一大笔开销,不用考虑线程。可以使用一些内置的glfw函数获取时间,这不是问题。地图导航呢,是在想是否可以是一种类似于百度地图那样的呈现,并在地图上进行交互的操作,但目前没有这部分的储备,所以并没有合适的想法。3.导航,可以考虑使用OpenCV对图像进行识别,然后进行相关操作。这就是第一天的分析,考虑到一些开源库,我想问题应该容易找到方向。信息管理中,文本的处理和数据结构的设计是关键问题。1.增删查,纯粹的算法设计,基础语句即可。
2023-12-11 21:42:22
56
空空如也
C++KNN的异常处理
2023-04-03
报错读取字符串时出错如何解决?
2023-02-19
关于#c++#的问题:Player A(“阿呆")
2023-02-17
关于#c++#的问题,请各位专家解答!
2023-02-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人