UE4.27.2 自定义 PrimitiveComponent 出现的问题

目录

在看大象无形,其中关于静态物体网络绘制的代码出错的 bug 我也搞了一会......

一开始是 ShaderCore 这个模块已经过时了,直接删掉就好了

然后是 GetRenderProxy() 不需要参数了

CreatePrimitiveUniformBufferImmediate

然后是 CreatePrimitiveUniformBufferImmediate 这个函数的用法发生了改变,具体看:

https://github.com/TriAxis-Games/RealtimeMeshComponent/issues/144

代码上来看,就是要改成

cpp 复制代码
		FBoxSphereBounds PreSkinnedLocalBounds;
		GetPreSkinnedLocalBounds(PreSkinnedLocalBounds);
		BatchElement.PrimitiveUniformBuffer = CreatePrimitiveUniformBufferImmediate(GetLocalToWorld(), GetBounds()
			, GetLocalBounds(), PreSkinnedLocalBounds, ReceivesDecals(), DrawsVelocity(), LpvBiasMultiplier);

FLocalVertexFactory 默认构造函数

然后是顶点工厂这个类没有默认构造函数了,所以需要在派生类里面显式调用顶点工厂基类的构造函数

cpp 复制代码
	FTestCustomComponentVertexFactory() : FLocalVertexFactory(ERHIFeatureLevel::SM5, "FTestCustomComponentVertexFactory") { }

这个 level 我随便填的,我也不懂

GetTypeHash

然后是派生自 FPrimitiveSceneProxy 的类差一个虚函数没有实现,所以仍然是抽象类,不能实例化

差的这个是 GetTypeHash

我找了一些引用,抄了一个

cpp 复制代码
	SIZE_T GetTypeHash() const override
	{
		static size_t UniquePointer;
		return reinterpret_cast<size_t>(&UniquePointer);
	}

ENQUEUE_RENDER_COMMAND

然后是 DataType 改成 FDataType

然后是 ENQUEUE_UNIQUE_RENDER_COMMAND_ONEPARAMETER 改成了 ENQUEUE_RENDER_COMMAND 于是新的命令为

cpp 复制代码
			ENQUEUE_RENDER_COMMAND(InitTestCustomComponentVertexFactor)([VertexBuffer, this](FRHICommandListImmediate& RHICmdList) {
				//Initialize the vertex factory's stream componnents,
				FDataType NewData;
				NewData.PositionComponent = STRUCTMEMBER_VERTEXSTREAMCOMPONENT(
					VertexBuffer, FDynamicMeshVertex, Position, VET_Float3);
				NewData.TextureCoordinates.Add(FVertexStreamComponent(VertexBuffer, STRUCT_OFFSET(FDynamicMeshVertex, TextureCoordinate), sizeof(FDynamicMeshVertex), VET_Float2));
				NewData.TangentBasisComponents[0] = STRUCTMEMBER_VERTEXSTREAMCOMPONENT(VertexBuffer,
					FDynamicMeshVertex, TangentX, VET_PackedNormal);
				NewData.TangentBasisComponents[1] = STRUCTMEMBER_VERTEXSTREAMCOMPONENT(VertexBuffer,
					FDynamicMeshVertex, TangentZ, VET_PackedNormal);
				SetData(NewData);
			});

null resource entry in uniform buffer parameters FLocalVertexFactory

然后虽然能够编译了,但是添加组件的时候崩溃了

null resource entry in uniform buffer parameters FLocalVertexFactoryUniformShaderParameters.Resources[0], ResourceType 0x6

我只能说不懂......我搜也搜了,没搜到什么,我去也去论坛提问了,希望有结果吧

相关推荐
Deveuper6 天前
UE5 C+、C++、C# 构造方法区别示例
c++·ue5·c#·ue4
胡说ba道8 天前
生活小妙招之UE CaptureRT改
ue4·材质
雕花の刺猬11 天前
UE4与WEB-UI通信
前端·ui·ue4·webui
Growthofnotes18 天前
UE4_环境_体积云_通过蓝图来控制云彩的形状及位置。
ue4
Growthofnotes20 天前
UE4_材质_世界场景位置偏移_角色擦除效果
ue4·材质
Runjavago20 天前
UE4外挂实现分析-PC端-附源码
android·ue4
Growthofnotes20 天前
UE4_材质节点_有关距离的_流体模拟
ue4·材质
Deveuper1 个月前
UE5 和 UE4 中常用的控制台命令总结
ue5·ue4
XR-AI-JK1 个月前
UE5肉鸽游戏教程学习
学习·游戏·ue5·ue4·新手学习·游戏教程·ue教程
峰度偏偏1 个月前
【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配
算法·游戏·unity·ue5·ue4·godot