UE4中的RHI指的是Render hardware interface,作用像Ogre里的RenderSystem,针对Dx11,Dx12,Opengl等等平台抽象出相同的接口,我们能方便能使用相同接口对应不同渲染平台.
和以前一样,先简单介绍一些类与文件的作用,我们有个抽象的了解.
RHI.h :主要定义一些硬件平台的公共变量.
一是 硬件支持项,如是否支持PF_FloatRGBA格式渲染目标,手机平台是否支持FrameBuffer拾取,支持体纹理,支持硬件合并渲染等等.
二是 硬件变量,如最大Cube纹理数,阴影贴图长宽最大值等等.
三是 常见渲染定义,如FSamplerStateInitializerRHI纹理采样,FRasterizerStateInitializerRHI栅栏化(填充格式,正方向定义,MSAA),FDepthStencilStateInitializerRHI逐片断处理中的模板与深度,FBlendStateInitializerRHI逐片断处理中的混合.FRHIDrawIndirectParameters/FRHIDrawIndexedIndirectParameters DrawCall中相关参数.
DynamicRHI.h :包含FDynamicRHI接口定义,渲染所需求所有接口,创建buffer,创建纹理,设置着色器参数,UAV等,简单来说,对应opengl,dx提供的渲染API,其DynamicRHI.cpp文件会根据平台(Windows,apple,android等等)来选择加载合适的渲染平台(如Opengl,Dx,Vulkan等),在RHI模块的private文件夹下,可能看到各个系统会如何选择相应的渲染平台.
FRenderResource:定义接口如InitDynamicRHI /ReleaseDynamicRHI /InitRHI /ReleaseRHI /InitResource /ReleaseResource /UpdateRHI等渲染资源选