Graphics
未读OpenGL Advance深度测试
开启深度测试glEnable(GL_DEPTH_TEST);
每次清空深度缓存glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
设定深度缓存对比函数glDepthFunc(GL_LESS);
深度值推导
模板缓存
12345678910111213141516glEnable(GL_STENCIL_TEST);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);glStencilMask(OxFF);允许模板缓存写入数据glStencilMask(0x00);禁止模板缓存写入数据glStencilFunc(GL_EQUAL, 1, 0xFF)参数1:什么情况下通过模板测试GL_NEVER,GL_LESS, GL_LEQUAL, GL_GREATER,GL_GEQUAL, GL_EQUAL, GL_NOTEQUAL, GL_ALWAYS参数2:对比的数据对象参数3:对比之前,缓存 ...
Graphics
未读OPENGL + FFMPEG 实现全景播放器
加载并编译着色器,用于处理顶点和片段着色。
创建一个球体模型,用于映射视频帧。
实现渲染帧的功能,将解码后的帧数据传递给GPU并绘制在球体上
Video 视频处理 编解码闪屏问题每次渲染新帧时,屏幕可能会出现闪屏现象,这可能是渲染的帧没有正确地显示或者上一帧的内容在新帧显示之前被清空。启用了VSync(垂直同步)。VSync会使得帧刷新率与显示器的刷新率同步,避免在图像未完全刷新时就进行绘制,从而减少闪屏和撕裂的情况。
双缓存问题启用双缓冲机制。这会使得渲染完成的一帧不会立即显示,而是先保存在一个缓冲区中,直到当前帧全部渲染完成后再交换缓冲区,避免屏幕上出现不完整的图像。
1glfwWindowHint(GLFW_DOUBLEBUFFER, GL_TRUE);
多线程处理,其中一个线程专门负责视频解码和帧数据准备,而主线程只负责渲染。这种方法有效地避免了主线程因为解码而阻塞导致的渲染延迟,从而消除了闪屏问题。
123456789101112131415161718192021222324252627// 解码线程,负责解码视频帧vo ...
1234567891011121314title: Unreal Hierarchydate: updated:tags: - UE5categories: - Unrealkeywords:description: Unreal Hierarchycomments: top_img: swiper_index: 1top_group_index: 1background: "#fff"
Unreal渲染管线PSO渲染管线中的 PSO(Pipeline State Object)是指一种用于定义和存储图形渲染状态的对象。PSO 是现代图形 API(如 DirectX 12 和 Vulkan)中引入的一个重要概念,旨在提高渲染性能和简化状态管理。
PSO 的作用在传统的图形渲染中,渲染状态是通过一系列 API 调用逐步设置的,比如设置着色器、混合模式、深度测试、光栅化状态等。这种做法虽然灵活,但在高性能渲染中容易导致开销较大的状态切换。PSO 则通过将这些渲染状态组合成一个对象进行管理,从而减少状态切换的开销。
PSO 的构成一个 PSO 通常包括以下状态信息 ...
关于虚拟机 virtualBox VMware 和 wsl如果要使用hypervisor
管理员运行cmd 关闭hyper
1bcdedit /set hypervisorlaunchtype off
关闭后会方便虚拟机virtualBox的使用 但是会影响wsl使用
VMware找微软要了hypervisor的权限 所以不需要对这个进行调整
重新打开
1bcdedit /set hypervisorlaunchtype auto
UE 基础gainian必要的规范以下规范仅作部分内容展示,随着文章推进逐步在后文补充,无法就此处进行展开.
命名规范:1.U++根据继承的父类及使用的功能分类进行命名:
a.继承自UObject的请使用U开头
b.继承自SWidget的请使用S开头
c.继承自AAcotr的请使用A开头
d.接口的类前缀为I
e.模板的类前缀为T
f.枚举的前缀为E
g.布尔变量前缀为b
h.其他多数类均以F为前缀,如结构体
i.动态多播,动态单播请以F开头,单播和多播建议以F开头
j.Typedefs应以任何与其类型相符的字母为前缀:若为结构体的Typedefs,则使用F;若为 Uobject 的Typedefs,则使用U,以此类推。
k.特化的Typedef不再是模板,并应加上相应前缀,例如:typedef TArray FArrayOfMyTypes;
2.UHT需要正确的前缀,因此添加前缀很重要
3.类型和变量的命名为名词
4.方法名是动词,以描述方法的效果或被方法影响的返回值
5.所 ...
UE 目录结构此处先给出官方对于项目目录的介绍:
目录结构 | 虚幻引擎 5.4 文档 | Epic Developer Community (epicgames.com)
我们先看蓝图的工程,直接创建一个空白的蓝图工程即可,请不要包含任何模板和初学者内容.它会默认打开.
以下是文件夹层次结构:
接下来我们看创建UEC++工程,它会默认打开编辑器和VS.
注意上图纯净工程未开启项目插件.如果项目需要使用项目插件,此处会有Plugins目录.
*.uproject是极其重要的文件,描述了我们的项目信息,并且掌握切换版本,生产vs文件等功能.
.通常情况下项目层级下的.vs,Binaries,DerivedDataCache, Intermediate,Saved, .vsconfig,*.sln文件可以被忽略并删除.
通常情况下的项目插件层级下的Binaries,Intermediate也可以被忽略或删除.但有些预编译插件,即未提供源码的插件不可执行该操作,会导致项目编译失败,必须上传相关文件.
以下给出个人使用的.gitignore和.gitattributes文件仅供参考:
最 ...