当前位置: 首页 > news >正文

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

目录

    • CreatePrimitiveUniformBufferImmediate
    • FLocalVertexFactory 默认构造函数
    • GetTypeHash
    • ENQUEUE_RENDER_COMMAND
    • null resource entry in uniform buffer parameters FLocalVertexFactory

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

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

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

CreatePrimitiveUniformBufferImmediate

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

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

代码上来看,就是要改成

		FBoxSphereBounds PreSkinnedLocalBounds;GetPreSkinnedLocalBounds(PreSkinnedLocalBounds);BatchElement.PrimitiveUniformBuffer = CreatePrimitiveUniformBufferImmediate(GetLocalToWorld(), GetBounds(), GetLocalBounds(), PreSkinnedLocalBounds, ReceivesDecals(), DrawsVelocity(), LpvBiasMultiplier);

FLocalVertexFactory 默认构造函数

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

	FTestCustomComponentVertexFactory() : FLocalVertexFactory(ERHIFeatureLevel::SM5, "FTestCustomComponentVertexFactory") { }

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

GetTypeHash

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

差的这个是 GetTypeHash

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

	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 于是新的命令为

			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

请添加图片描述

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

http://www.lryc.cn/news/182890.html

相关文章:

  • 【docker】数据卷和数据卷容器
  • HTML——列表,表格,表单内容的讲解
  • Mongodb学习
  • 2024届计算机毕业生福利来啦!Python毕业设计选题分享Django毕设选题大全Flask毕设选题最易过题目
  • 网络爬虫指南
  • 9、媒体元素标签
  • php单独使用think-rom数据库 | thinkphp手动关闭数据库连接
  • 337. 打家劫舍 III
  • tio-websocket-spring-boot-starter的最简单实例,看完你一定有所收获
  • 列出连通集
  • 前端 富文本编辑器原理——从javascript、html、css开始入门
  • 堆--数据流中第K大元素
  • 【算法|动态规划No.12】leetcode152. 乘积最大子数组
  • Covert Communication 与选择波束(毫米波,大规模MIMO,可重构全息表面)
  • 计算机毕业设计 基于协调过滤算法的绿色食品推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 华为云云耀云服务器L实例评测|部署在线影音媒体系统 Jellyfin
  • GhostNet原理解析及pytorch实现
  • 视频二维码的制作方法,支持内容修改编辑
  • 清华GLM部署记录
  • 贪心算法+练习
  • 使用华为eNSP组网试验⑷-OSPF多区域组网
  • P1843 奶牛晒衣服 【贪心】
  • 91、Redis - 事务 与 订阅-发布 相关的命令 及 演示
  • GPU如何成为AI的加速器
  • Map声明、元素访问及遍历、⼯⼚模式、实现 Set - GO语言从入门到实战
  • 机器人中的数值优化|【七】线性搜索牛顿共轭梯度法、可信域牛顿共轭梯度法
  • websocket实现go(server)与c#(client)通讯
  • 洛谷题目题解详细解答
  • 【C语言】八大排序算法
  • 2023年中国智能电视柜产量、需求量、市场规模及行业价格走势[图]