E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
cherno
跟着
cherno
手搓游戏引擎【24】开启2D引擎前的项目总结(包括前置知识汇总)
前置技术:vs属性解释:MSBuild的入门完整教程(包学包会)-CSDN博客配置界面:c++动态链接和静态链接:隐藏的细节:编译与链接_哔哩哔哩_bilibili【底层】动态链接库(dll)是如何工作的?_哔哩哔哩_bilibilicmake:软件构建:CMake快速入门_哔哩哔哩_bilibiliCMake保姆级教程【C/C++】_哔哩哔哩_bilibilipreake5:premake5实例
larito
·
2024-02-12 09:22
游戏引擎
跟着
cherno
手搓游戏引擎【23】项目维护、2D引擎之前的一些准备
项目维护:修改文件结构:头文件自己改改就好了创建2DRendererLayer:Sandbox2D.h:#pragmaonce#include"YOTO.h"classSandbox2D:publicYOTO::Layer{public:Sandbox2D();virtual~Sandbox2D()=default;virtualvoidOnAttach()override;virtualvoid
larito
·
2024-02-09 20:20
游戏引擎
C++学习笔记:三种智能指针【Share、Unique、Weak】【
Cherno
】
老规矩,先问题后文章:为什么要有智能指针以及它的好处是什么、智能指针是在怎么工作的、智能指针的操作;1:为什么要有智能指针:要知道,内存泄漏是非常严重的后果,如果new出来的空间没在合适的时间delete,那么很容易出现bug或者内存泄漏,而合适地用new和delete又是一个特别难的工作,所以C++就推出了智能指针这个概念,其是为了方便程序员管理内存。大量使用智能指针代替new、delete函数
刘欢明
·
2024-02-08 12:26
C++
智能指针
shared
weak
unique
跟着
cherno
手搓游戏引擎【22】CameraController
前置:YOTO.h:#pragmaonce//用于YOTOAPP#include"YOTO/Application.h"#include"YOTO/Layer.h"#include"YOTO/Log.h"#include"YOTO/Core/Timestep.h"#include"YOTO/Input.h"#include"YOTO/KeyCode.h"#include"YOTO/MouseBut
larito
·
2024-02-07 08:41
游戏引擎
跟着
cherno
手搓游戏引擎【21】shaderLibrary(shader管理类)
前置:ytpch.h:#pragmaonce#include#include#include#include#include#include#include#include#include#include#include#ifdefYT_PLATFORM_WINDOWS#include#endif//YT_PLATFORM_WINDOWS创建glsl文件:Texture.glsl:#typever
larito
·
2024-02-05 14:19
游戏引擎
跟着
cherno
手搓游戏引擎【20】混合(blend)
抽象:Renderer.h:#pragmaonce#include"RenderCommand.h"#include"OrthographicCamera.h"#include"Shader.h"namespaceYOTO{classRenderer{public:staticvoidInit();staticvoidBeginScene(OrthographicCamera&camera);st
larito
·
2024-02-05 14:15
游戏引擎
跟着
cherno
手搓游戏引擎【17】整理代码、timestep和transform
这里就不分部走了,直接上代码。全局:YOTO.h:添加renderer的头文件:#pragmaonce//用于YOTOAPP#include"YOTO/Application.h"#include"YOTO/Layer.h"#include"YOTO/Log.h"#include"YOTO/Core/Timestep.h"#include"YOTO/Input.h"#include"YOTO/Ke
larito
·
2024-02-03 06:34
游戏引擎
跟着
cherno
手搓游戏引擎【19】抽象纹理
引入:导入stb_image:GitHub-nothings/stb:stbsingle-filepublicdomainlibrariesforC/C++下载复制stb_image.h的内容(8000多行),然后粘到如图位置stb_image.cpp:#include"ytpch.h"#defineSTB_IMAGE_IMPLEMENTATION#include"stb_image.h"修改SR
larito
·
2024-02-03 06:56
游戏引擎
跟着
cherno
手搓游戏引擎【18】抽象Shader、项目小修改
抽象:Shader.h:#pragmaonce#includenamespaceYOTO{classShader{public:virtual~Shader()=default;virtualvoidBind()const=0;virtualvoidUnBind()const=0;staticShader*Create(conststd::string&vertexSrc,conststd::st
larito
·
2024-02-03 06:25
游戏引擎
跟着
cherno
手搓游戏引擎【16】Camera和Uniform变量的封装
相机封装:OrthographicCamera.h:#pragmaonce#includenamespaceYOTO{classOrthographicCamera{public:OrthographicCamera(floatleft,floatright,floatbottom,floattop);constglm::vec3&GetPosition()const{returnm_Positi
larito
·
2024-02-01 08:27
游戏引擎
跟着
cherno
手搓游戏引擎【15】DrawCall的封装
目标:Application.cpp:把渲染循环里的glad代码封装成自己的类:#include"ytpch.h"#include"Application.h"#include"Log.h"#include"YOTO/Renderer/Renderer.h"#include"Input.h"namespaceYOTO{#defineBIND_EVENT_FN(x)std::bind(&x,this
larito
·
2024-01-31 08:30
游戏引擎
跟着
cherno
手搓游戏引擎【14】封装opengl
本节先把代码粘上,后续会慢慢把注释都给加上,先看代码了解个大概(待更新)前置:RendererAPI.h:#pragmaoncenamespaceYOTO{enumclassRendererAPI{None=0,OpenGL=1};classRenderer{public:inlinestaticRendererAPIGetAPI(){returns_RendererAPI;}staticRend
larito
·
2024-01-30 07:27
游戏引擎
跟着
cherno
手搓游戏引擎【13】着色器(shader)
创建着色器类:shader.h:初始化、绑定和解绑方法:#pragmaonce#includenamespaceYOTO{classShader{public:Shader(conststd::string&vertexSrc,conststd::string&fragmentSrc);~Shader();voidBind()const;voidUnBind()const;private:uint
larito
·
2024-01-29 05:14
游戏引擎
跟着
cherno
手搓游戏引擎【12】渲染context和首个三角形
渲染上下文:目的:修改WindowsWindow的结构,把glad抽离出来WindowsWindow.h:新建m_Context#pragmaonce#include"YOTO/Window.h"#include#include#include"YOTO/Log.h"structGLFWwindow;namespaceYOTO{classWindowsWindow:publicWindow{pub
larito
·
2024-01-28 06:08
游戏引擎
跟着
cherno
手搓游戏引擎【11】静态库、警告消除(渲染预热)
premake修改:SRC下的premakeworkspace"YOTOEngine"--sln文件名architecture"x64"configurations{"Debug","Release","Dist"}startproject"Sandbox"--https://github.com/premake/premake-core/wiki/Tokens#value-tokens--组成输
larito
·
2024-01-28 06:37
游戏引擎
跟着
cherno
手搓游戏引擎【10】使用glm窗口特性
修改ImGui层架构:创建:ImGuiBuild.cpp:引入ImGui#include"ytpch.h"#defineIMGUI_IMPL_OPENGL_LOADER_GLAD//opengl的头文件需要的定义,说明使用的是gald#include"backends/imgui_impl_opengl3.cpp"#include"backends/imgui_impl_glfw.cpp"Laye
larito
·
2024-01-25 07:15
游戏引擎
跟着
cherno
手搓游戏引擎【9】glm配置
glm配置:下载glm数学库GitHub-g-truc/glm:OpenGLMathematics(GLM)修改SRC下的premake5.lua文件:workspace"YOTOEngine"--sln文件名architecture"x64"configurations{"Debug","Release","Dist"}startproject"Sandbox"--https://github.
larito
·
2024-01-25 07:45
游戏引擎
跟着
cherno
手搓游戏引擎【7】Input轮询
在引擎程序中任何时间,任何位置都能知道按键是否按下、鼠标的位置等等信息。与事件系统的区别:事件系统是在按下时调用并传递按键状态;轮询是每时每刻都能获取按键状态创建基类:YOTO/Input.h:名如其意#pragmaonce#include"YOTO/Core.h"namespaceYOTO{classYOTO_APIInput{public:inlinestaticboolIsKeyPresse
larito
·
2024-01-17 01:04
游戏引擎
跟着
cherno
手搓游戏引擎【8】按键和鼠标的KeyCode
自定义KeyCode先把glfw3.h里的KeyCode的定义抄到咱这里来。在YOTO下创建KeyCode.h:#pragmaonce#ifdefYT_PLATFORM_WINDOWS///从glfw3中拿的#defineYT_KEY_SPACE32#defineYT_KEY_APOSTROPHE39/*'*/#defineYT_KEY_COMMA44/*,*/#defineYT_KEY_MINU
larito
·
2024-01-17 01:04
游戏引擎
跟着
cherno
手搓游戏引擎【6】ImGui和ImGui事件
导入ImGui:下载链接:GitHub-TheCherno/imgui:DearImGui:Bloat-freeImmediateModeGraphicalUserinterfaceforC++withminimaldependencies新建文件夹,把下载好的文件放入对应路径:SRC下的premake5.lua文件:添加ImGuiworkspace"YOTOEngine"--sln文件名arch
larito
·
2024-01-17 01:03
游戏引擎
Cherno
_游戏引擎系列教程(3):44~73
文章目录44.ShaderAssetFilesGameEngineseries45.ShaderLibraryGameEngineseries46.HowtoBuilda2DRendererGameEngineseries47.CameraControllersGameEngineseries48.ResizingGameEngineseries49.MaintenanceGameEnginese
亲亲老婆几
·
2024-01-14 07:29
计算机图形学
3d
c++
开发语言
Cherno
_游戏引擎系列教程(1):1~16
文章目录1.IntroducingtheGAMEENGINEseries!2.WhatisaGAMEENGINE3.DESIGNINGourGAMEENGINE4.ProjectSetupGameEngineSeries5.EntryPointGameEngineSeries6.LoggingGameEngineSeries7.PremakeGameEngineSeries8.Planningth
亲亲老婆几
·
2024-01-14 07:28
计算机图形学
c++
跟着
cherno
手搓游戏引擎【5】layer(层)、Glad
编写基类层:Layer.h:提供Attach链接、Detach解绑、Update刷新、Event事件、GetName方法#pragmaonce#include"YOTO/Core.h"#include"YOTO/Event/Event.h"namespaceYOTO{classYOTO_APILayer{public:Layer(conststd::string&name="Layer");vir
larito
·
2024-01-14 07:52
游戏引擎
跟着
cherno
手搓游戏引擎【4】窗口抽象、GLFW配置
引入GLFW:在vendor里创建GLFW文件夹:在github上下载,把包下载到GLFW包下。GitHub-TheCherno/glfw:Amulti-platformlibraryforOpenGL,OpenGLES,Vulkan,windowandinput修改SRC/premake5.lua的配置:12、13、15、36、37、38、39、40行的代码是新加上去的:workspace"YO
larito
·
2024-01-13 05:45
游戏引擎
跟着
cherno
手搓游戏引擎【3】事件系统和预编译头文件
不多说了直接上代码,课程中的架构讲的比较宽泛,而且有些方法写完之后并未测试。所以先把代码写完。理解其原理,未来使用时候会再此完善此博客。文件架构:Event.h:核心基类#pragmaonce#include"../Core.h"#include#includenamespaceYOTO{//Hazel中的事件当前是阻塞的,这意味着当一个事件发生时,它立即被分派,必须立即处理。//将来,一个更好的
larito
·
2024-01-02 07:55
游戏引擎
跟
cherno
手搓游戏引擎【1】:配置与入口点
环境配置:编译环境:VS2019创建两个项目:设置Sandbox为启动项:设置sandbox的配置属性-常规-输出目录\中间目录为如下:预处理定义:为了配置一些只有windows才能用的函数。设置YOTOEngin(我自己起的名字)配置属性-常规-输出目录\中间目录为如下:配置类型改为dll。预处理定义:为了配置一些只有windows才能用的函数,并且在core.h中区分在此包中,是dll导出还是
larito
·
2024-01-02 07:24
游戏引擎
跟着
cherno
手搓游戏引擎【2】:日志系统spdlog和premake的使用
配置:日志库文件github:GitHub-gabime/spdlog:FastC++logginglibrary.新建vendor文件夹将下载好的spdlog放入配置YOTOEngine的附加包含目录:配置Sandbox的附加包含目录:包装spdlog:在YOTO文件夹下创建Log.cpp和log.hlog.h:#pragmaonce#include"Core.h"#include#includ
larito
·
2024-01-02 06:21
游戏引擎
The
Cherno
C++笔记02
目录Part06HowtheC++CompilerWorks1.编译过程2.C++并不关心文件3.翻译单元(TranslationUnit)4.实际用代码感受一下编译过程4.1预处理4.1.1预处理的本质4.1.2预处理后的.i文件4.1.3骚操作4.2.asm文件(汇编语言源文件)4.2.1直观感受优化4.2.2常量折叠(ConstantFolding)Part06HowtheC++Compil
san_zhang_robot
·
2023-12-23 09:38
C++
笔记
c++
开发语言
The
Cherno
C++ 笔记01
目录Part01WelcometoC++1.为什么学习C++——写高性能代码的选择①直接内存控制②低级别访问③性能优化工具④内联汇编⑤多范式编程2.C++的可移植性和高效性2.1可移植性2.2高效性Part02-Part041.在不同环境中安装C++编译器2.新建源文件Part05HowC++Works1.HelloWorld2.从文件到可执行程序2.1预处理2.2编译2.2.1配置方式编辑编辑2
san_zhang_robot
·
2023-12-23 09:08
C++
c++
笔记
开发语言
The
Cherno
C++笔记 03
目录Part07HowtheC++LinkerWorks1.链接2.编译链接过程中出现的错误2.1缺少入口函数注意:如何区分编译错误还是链接错误注意:入口点可以自己设置2.2找不到自定义函数2.2.1缺少声明2.2.2自定义函数与引用函数不一致2.3在头文件中放入定义2.3.1多次定义2.3.2头文件不要放定义Part07HowtheC++LinkerWorks1.链接每个源文件都会被编译器编译成
san_zhang_robot
·
2023-12-23 09:05
C++
笔记
c++
开发语言
了解C++工作机制
基于hello.cpp对C++的运行进行一个初步认识,并介绍国外C++大佬
Cherno
常用的项目结构和调试TipsC++是如何工作的C++工作流程1.实用工程(project)结构(1)MicrosoftVisualStudio2022
春风LiuK
·
2023-12-20 12:15
C++学习
c++
开发语言
microsoft
visual
studio
Hazel引擎学习(十二)
我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看参考视频链接在这里这是这个系列的最后一篇文章,
Cherno
也基本停止了GamesEngine视频的更新,感觉也差不多了,后续可以基于此项目开发自己想要的引擎功能了
弹吉他的小刘鸭
·
2023-12-15 19:59
Hazel游戏引擎
游戏引擎
C++-youtube
cherno
C++视频的一些知识点
对函数的调用在汇编中对应一句callfunc语句,其中func是一个函数的签名(signature)对程序而言,即使只有一个文件,链接器也需要链接,因为它需要链接程序入口点(entrypoint)一个程序的入口点不必一定是名为main的函数如果声明了一个函数A但是没有调用该函数的语句,那么不会报链接错误,因为根本不需要链接该函数;如果有该调用语句且所在的函数B是static,且所在static函数
mrbone11
·
2023-12-01 11:46
C++
c++
开发语言
youtube
cherno
[
Cherno
C++ 笔记 P11~P20]判断,循环,指针,引用,类
[ChernoC++笔记P11~P20]判断,循环,指针,引用,类系列博客前言视频链接P11如何在VisualStudio中调试代码P12C++条件与分支(if语句)ifelse汇编中的ifelseP13VisualStudio的最佳设置P14C++循环(for、while)for,while,dowhile汇编中的循环P15C++控制流语句(continue,break,return)汇编中的b
人工智能护发素
·
2023-11-27 04:45
c++
编程语言
c++ 学习笔记
学习笔记更新ing前言:这篇文章是
Cherno
教学视频的笔记,看了这个系列的C++教程后,很多之前看代码时看不懂的和调试代码时解决不了的bug都豁然开朗,膜拜大佬啊vistualstudio修改输出目录与中间目录
guchaono1
·
2023-11-27 04:44
c++
openGL
visualstudio
c++
学习
开发语言
C++ Windows 窗体程序入门 - 1.你的第亿个窗体程序
的书籍,就想来,算是记笔记吧,顺便还能给你们总结一些经验注:有许多内容源于我看过的一些视频,比如Chili和
Cherno
的,大家也可以去搜一搜一.准备————————————————————我为什么要写这一栏
wind_2067
·
2023-11-24 01:46
#
Windows窗体入门
windows
c++
Cherno
C++ P31 C++字符串
constchar*name="
Cherno
";字符串在内存中什么
罗曼史的逝世
·
2023-10-15 15:14
C++
c++
开发语言
后端
字符串
C++学习笔记:成员初始化列表【
Cherno
】
先带着几个问题来看文章:为什么要有初始化列表、怎么写初始化列表,初始化列表的好处是什么;1:为什么要有初始化列表:很简单,为了提高效率和C++风格化,先说C++风格化,如果我们要在一个构造函数中初始化很多个变量,且要在构造函数中进行其他操作,那么如果我们将赋值语句和其他操作的语句放在一起,那么程序的可读性就会变得很差,而初始化列表就可以很好地解决问题,因为它是允许在函数开始前进行赋值的,而提高效率
刘欢明
·
2023-10-09 22:22
C++
初始化列表
小白学习C++——Windows系统Visual Studio的下载与安装
注:本教程来源于澳大利亚游戏引擎工程师
Cherno
的视频教程,本人观看了B站UP主佐夫对原视频进行中文字幕翻译的视频教程,怕遗忘故整理了以下笔记,标明原著,保护知识产权!
逆光逆光
·
2023-09-26 17:33
C++
c++
visual
studio
The
Cherno
——OpenGL
TheCherno——OpenGL1.欢迎来到OpenGLOpenGL是一种跨平台的图形接口(API),就是一大堆我们能够调用的函数去做一些与图像相关的事情。特殊的是,OpenGL允许我们访问GPU(GraphicsProcessingUnit图像处理单元,也就是显卡),可以更好地绘制图形。实际上,为了利用在电脑或其他设备(比如手机)中强大的图形处理器,需要调用一些API访问固件。OpenGL正好
壹~
·
2023-08-30 06:45
OpenGL
c++
图形渲染
着色器
Cherno
C++笔记
ChernoC++笔记很久前在油管上看的大神
cherno
的c++教学视频,现在已经更新到了100P左右了。
錶哥
·
2023-07-29 05:16
c++
C++学习笔记:static关键字在类和结构体中的作用【
Cherno
】
首先,类和结构体中static变量会让在类和结构体【下文统称结构体】定义一个只有该类能调用的变量,且这个变量有一个很特殊的性质,比如你弄了个worker结构体,且在里面定义了一个static声明过的变量num,那么尽管你定义了多个worker实例,但每个worker中都没有一个num变量,但每一个worker实例都可以调用num,且最有意思的是每个worker调用的是同一个num;我们写一个源.c
刘欢明
·
2023-04-20 13:24
C++
Cherno
C++ P21 C++中的静态(static)
C++中的静态(static)YouTube视频链接本文是ChernoP21视频的学习笔记,P20编写了一个简单的C++类。 static关键字在C++中有两个含义,这取决上下文。一个是在类或结构体外部使用static关键字,另一种是在类或结构体内部使用static关键字。 类或结构体外部的static,意味着声明为static的符号,链接将只在内部,它只对我们定义它的翻译单元可见。在类或结构
罗曼史的逝世
·
2023-04-20 13:52
C++
c++
开发语言
后端
Cherno
C++ P22 C++类和结构体中的静态(static)
C++类和结构体中的静态(static)YouTube视频链接本文是ChernoP22视频的学习笔记。 前文提到了static关键字在C++中的两个含义,讨论了类或结构体外部使用static关键字。本文将接着讨论在类或结构体中的static关键字。 静态在一个类中意味着特定的东西,把它和变量一起使用,这样在类的所有实例中,这个变量就只有一个实例。 Main.cpp代码如下,输出2,3和5,8
罗曼史的逝世
·
2023-04-20 13:52
C++
c++
开发语言
后端
Cherno
C++系列笔记5——P21~P23 C++中的静态static
文章目录1.P21类外的静态(static)1.1.static分类1.2.代码分析2.P22类和结构体中的静态(static)2.1.类中的静态的含义2.2.类中静态成员变量的访问方法2.2.1.静态成员变量的定义2.2.2.静态成员变量的访问2.2.3.程序示例2.3.类中静态成员函数无法访问非静态成员变量的解释3.P23局部静态(localstatic)3.1.函数中的局部静态3.2.局部静
Cc1924
·
2023-04-20 13:21
C++
c++
Cherno
C++系列笔记23——P66~P67 类型双关、联合体union
文章目录1.P66类型双关1.1.实例11.2.实例22.P67联合体union2.1.实例12.2.实例22.2.1.使用类型双关(指针类型重解释)2.2.2.使用联合体union1.P66类型双关参考:视频笔记类型双关用来在C++中绕过类型系统。C++中有类型系统,当我们创建变量时必须声明整数或双精度数或类等等。C++中的类型是由编译器强制执行的,但我们可以直接访问内存。所以实际上内存双关就是
Cc1924
·
2022-04-10 20:18
C++
C++
Cherno
C++系列笔记18——P55~P56 宏定义、
文章目录1.P55宏定义2.P561.P55宏定义参考:视频笔记宏定义用于函数注意宏定义的语句最后不要加;,而应该在调用的语句后面加;,因为这样更加符合语法规则(在调用的地方加;)#include#defineLOG(x)std::cout#defineMAINintmain()\{\std::cin.get();\}MAIN宏定义最好加上()限制,防止出错这个视频中没讲,是在实际开发中遇到的。比
Cc1924
·
2022-04-04 14:44
c++
C++移动语义 详细讲解【
Cherno
C++教程】
移动语义本文是对《最好的C++教程》的整理,主要是移动语义部分,包含视频85p左值和右值、89p移动语义与90pstdmove和移动赋值操作符。移动语义是C++11的新feature,可能许多人学习的时候尚未使用到C++11的特性,但是现在C++11已经过去了10年了,早已成为广泛使用的基础特性。所以绝对值得一学。在我的上一篇博客自己动手写Vector中就用到了相关的内容对Vector的性能做了一
zhangyi1357
·
2022-03-17 19:00
自己动手写Vector【
Cherno
C++教程】
动手写一个Vector本文是对《最好的C++教程》的动手写数据结构部分的一个整理,主要包含91p动手写Array数组和92p动手写Vector数组的内容。自己动手来写这些数据结构是学习C++的绝佳方法,并且可以更加深刻的理解标准库中Vector和Array的实现和用法。强烈建议自己尝试实现一个包含下面这些知识点的Array和Vector,与文章中实现进行对比。强烈建议看完本文后关闭浏览器,尝试还原
zhangyi1357
·
2022-03-15 19:00
OpenGL 安装(windows10)
Environment:VisualStudio2015,VisualStudio2017Reference:参考up主
Cherno
的教学视频1.下载GLFW下载地址可以下载编译好的32位或64位版本。
Zeke_Wang
·
2022-02-19 20:42
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他