虚幻面试题目
1.光栅化是什么?
光栅化是指将三维图形在图形处理器中转化为二维图形的过程。在光栅化过程中,三维图形的每一个像素被计算出来并映射到屏幕上的对应位置。该过程包括将三维图形投影到二维平面、确定每个像素的颜色和纹理、进行边界填充和纹理映射等。
光栅化是用来将复杂的三维图形在屏幕上呈现的基本方法,是电脑图形学的核心技术之一。在游戏开发、计算机视觉和图形学领域中都有广泛的应用。
2.虚幻引擎的渲染管线
虚幻引擎的渲染管线是一系列的渲染步骤,用于将三维场景转换为二维图像,并将其呈现在屏幕上。虚幻引擎的渲染管线通常包括以...
UE topdown 和 第三人称结合
UE topdown 和 第三人称结合
需求是要求具有两套输入方式
UE topdown 和 第三人称结合
具有第三人称的输入模式,即wasd控制移动
具有topdown的输入方式,鼠标点选位置,玩家移动过去
实现方式
总体
鼠标点选位置,自动寻路
得到的各条路是以vector的形式存在的,依次遍历得到各个位置,作为add movement input的位置
检测玩家wasd是否输入,进行中断自动寻路的行为
UE5 增强输入 C++版本
直接贴代码:
//.h文件
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "InputActionValue.h"
#include "BlasterCharacter.generated.h"
UCLASS()
class...
UE性能分析找内鬼啦
UE4 性能 - (一)瓶颈定位
stat fps
stat unit
其次,之所以需要花精力去“定位”,是由于造成卡顿的原因有多种,而在 UE4 体系中,造成卡顿的因素大致分为三类,隐含在另一个最常用的命令之中:stat unit
Frame: 即一帧所耗费的总时间,这个值越大,fps 就越小,二者相乘恒等于 1
Game: 处理游戏逻辑所耗费的时间
这一步完全不考虑渲染问题,表现的是整个游戏世界在一帧之内,只在逻辑层面处理所有的变化需要花多长时间——Compute Game Context
Draw...
热更HotPatcher
操作流程
1. 插件下载
插件是开源的,需要下载:
https://github.com/hxhb/HotPatcher
2. 插件放入
基础操作:打开项目创建一个新的空白插件名字是:HotPatcher
将下载插件HotPatcher放入到plugins目录中,整体替换创建的空白插件HotPatcher
3. 打基础包
是将基础包打出来,就是正常的UE打包的方式
在基础包的基础上,通过HotPatcher将正常的基础打出xxx_Release.json文件,该版本记录的是打出的基本包资产的Hash,资产...
DrawCall
1.什么是DrawCall
CPU调用图像编程接口。
在Shader渲染流水线的应用阶段,当CPU准备好场景数据,设置好渲染状态,就会调用DrawCall命令,开启一个渲染过程
2.为什么DrawCall多了会影响帧率
CPU每次调用DrawCall,都需要向GPU发送许多数据、状态,在发送前CPU需要从硬盘读取到显存的数据、设置的渲染状态以及调用DrawCall命令操作。一旦CPU执行完应用阶段,GPU即开始执行本次渲染。GPU渲染的速度比CPU提交命令的速度快的多。所以性能就会被CPU的提交速度所影响,...
C++ 序列化:从设计到实现
C++ 序列化:从设计到实现
https://github.com/PengChaoJay/CPP/tree/main/Serialization
介绍
概念
序列化 (serialization) 是将对象的状态信息转化为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入临时或持久性存储区。以后可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化的方式
文本格式:JSON,XML
二进制格式:protobuf
二进制序列化
序列化: 将数据结构或对象转换成二进制串的过程
反...
CPPReflection C++的反射设计和实现
CPPReflection
https://github.com/PengChaoJay/CPP
介绍
概念
反射机制允许程序在运行时借助Reflection API 取得任何类的内部信息,并能直接操作对象的内部属性和方法。(比如UE中的反射的实现)
问题
C++不支持反射
很多业务场景需要依赖反射机制,比如:RPC,WEB MVC,对象序列化等。
场景:
RPC,远程过程调用,比如客户端向服务端发送请求,服务端处理之后给客户端发送处理结果,客户端如何获得对象,获得对象里面的方法,变量,需要使用反射。
...
记录自己的学习
take notes of my work ,include C++,UEC++,UE,Games course of series,Go,git, svn,TS,and so on。
https://github.com/PengChaoJay/WorkNotes