虚幻4 渲染staticmesh过程。

本文详细探讨了虚幻4引擎中渲染staticmesh的过程,从相关源代码的角度出发,涉及EngineSourceRuntimeRendererPrivateStaticMeshDrawList.inl及DrawingPolicy.cpp和D3D11Commands.cpp文件,讲解了如何利用DeviceIMContext的函数实现静态网格的绘制。
摘要由CSDN通过智能技术生成

void FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate& RHICmdList)

{

.....

RenderBasePass(RHICmdList);

}

这个函数是渲染staticmesh的。 

然后调用到

Engine\Source\Runtime\Renderer\Private\StaticMeshDrawList.inl

文件中的

template<typename DrawingPolicyType>
template<InstancedStereoPolicy InstancedStereo>
bool TStaticMeshDrawList<DrawingPolicyType>::DrawVisibleInner(
	FRHICommandList& RHICmdList,
	const FViewInfo& View,
	const typename DrawingPolicyType::ContextDataType PolicyContext,
	const TBitArray<SceneRenderingBitArrayAllocator>* const StaticMeshVisibilityMap,
	const TArray<uint64, SceneRenderingAllocator>* const BatchVisibilityArray,
	const StereoPair* const StereoView,
	int32 FirstPolicy, int32 LastPolicy,
	bool bUpdateCounts
	)
{
	// We should have a single view's visibility data, or a stereo pair
	check((StaticMeshVisibilityMap != nullptr && BatchVisibilityArray != nullptr) || StereoView != nullptr);
	check((InstancedStereo == InstancedStereoPolicy::Enabled) == (StereoView != nullptr));

	bool bDirty = false;
	STAT(int32 StatInc = 0;)
	for (int32 Index = FirstPolicy; Index <= LastPolicy; Index++)
	{
		FDrawingPolicyLink* DrawingPolicyLink = &DrawingPolicySet[OrderedDrawingPolicies[Index]];
		bool bDrawnShared = false;
		FPlatformMisc::Prefetch(DrawingPolicyLink->CompactElements.GetData());
		const int32 NumElements = DrawingPolicyLink->Elements.Num();
		FPlatformMisc::Prefetch(&DrawingPolicyLink->CompactElements.GetData()->MeshId);
		const FElementCompact* CompactElementPtr = DrawingPolicyLink->CompactElements.GetData();
		uint32 Count = 0;
		for (int32 ElementIndex = 0; ElementIndex < NumElements; ElementIndex++, CompactElementPtr++)
		{
			// Single view
			if (InstancedStereo == InstancedStereoPolicy::Disabled)
			{
				i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值