Unreal UMG源码阅读(4)
我们来看看\Source\Runtime\SlateCore\Public\Rendering\DrawElements.h,里面的内容比较多,要分成两篇写。我们从头看起。
看看里面的FSlateDataPayload 类,这个类没有SLATECORE_API 修饰,说明它不是一个导出的API,而只是一个内部的功能类。里面的变量还是比较丰富的,
源码FLinearColor Tint ; 线性颜色 ,FMargin BrushMargin;二维的空间盒,FBox2D BrushUVReginon; 二维的空间盒,下面三个(BrushTiling,BrushMirroring,BrushDrawType)是渲染相关的enum,只不过用一个EnumAsByte给修饰起来了。
FSlateShaderResource* RenderTargetResource;是brush,里面有渲染要用的width,height,shadertype(NativeTexture/*texture resource*/,TexureObject/*utext object resource*/,Material,PostProcess,Invalid).
FSlateFontInfo FontInfo; 字体相关的信息。 TCHAR* ImmutableText;空终止字符串,int32 TextLength;文本长度,包含空终止字符串(matching strlen)。
FShapedGlyphSequencePtr ShapedGlyphSequence;文字相关的信息。后面有分单独的一章来细说。
ESlateBatchDrawFlag BatchFlags;一些批次信息。
// Bezier Spline Data points. E.g. 贝塞尔曲线,注释里的图很有意思,摘下来
//
// P1 + - - - - + P2 P1 +
// / \ / \
// P0 * * P3 P0 * \ * P3
// \ /
// + P2
FVector2D P0;
FVector2D P1;
FVector2D P2;
FVector2D P3;
这些变量看完,里面的方法没什么好看的,后面看DreawElements.cpp里的实现再细说。
class FSlateDrawElement 是(slate的渲染数据接口) the building block for Slate's rendering interface