这是盖莫游戏引擎2.1.2中GUI之2-GUI刷子
该对象提供对2d基本图元的绘制和操作
提供以下功能
1.点绘制
2.线段绘制
3.矩形绘制
4.三角形绘制
5.纹理渲染
以后还会加入更多的功能
其功能大致相当于UI lib中的Graphics,
Glooery中的Renderer
以及GUI Chart中的Graphics!
其接口如下:
////////////////////////////////////////////////////////////
/// 定义引擎GUI刷子(提供简单的几何体绘制操作)
////////////////////////////////////////////////////////////
class G_DLL_API GuiBrush : public Object
{
public:
////////////////////////////////////////////////////////
/// GUI刷子构造,析构
////////////////////////////////////////////////////////
GuiBrush();
virtual ~GuiBrush();
public:
////////////////////////////////////////////////////////
/// 设置GUI刷子颜色
////////////////////////////////////////////////////////
virtual void SetBrushColor(const Color& color) = 0;
//////////////////////////////////////////////////////////
/// 设置刷子线宽
//////////////////////////////////////////////////////////
virtual void SetLineWidth(float width) = 0;
virtual float GetMaxLineWidth()const = 0;
virtual float GetLineWidth()const = 0;
//////////////////////////////////////////////////////////
/// 绘制一个点
//////////////////////////////////////////////////////////
virtual void RenderPoint(const Point& point) = 0;
virtual void RenderPoint(const Vector2f& point) = 0;
virtual void RenderPoint(int x,int y) = 0;
virtual void RenderPoint(float x,float y) = 0;
////////////////////////////////////////////////////////
/// 绘制一个线段
////////////////////////////////////////////////////////
virtual void RenderLine(const Vector2f& from, const Vector2f& to) = 0;
virtual void RenderLine(const Point& from, const Point& to) = 0;
////////////////////////////////////////////////////////
/// 绘制一个矩阵框(填充与否)
////////////////////////////////////////////////////////
virtual void RenderRect(const Recti& rect, bool fill = true) = 0;
virtual void RenderRect(const Rectf& rect, bool fill = true) = 0;
////////////////////////////////////////////////////////
/// 绘制一个三角形
////////////////////////////////////////////////////////
virtual void RenderTriangle(const Vector2f& p1,const Vector2f& p2,const Vector2f& p3, bool fill = true) = 0;
virtual void RenderTriangle(const Point& p1,const Point& p2,const Point& p3, bool fill = true) = 0;
//////////////////////////////////////////////////////////
/// 绘制一个园,园扇(segments为边数)
//////////////////////////////////////////////////////////
virtual void RenderCircle(const Vector2f& center,float radius,int segments = 32) = 0;
virtual void RenderCircleSegment(const Vector2f& center,float radius,float angle1,float angle2,int segments = 32,bool filled = true) = 0;
////////////////////////////////////////////////////////
/// 渲染纹理
////////////////////////////////////////////////////////
virtual void RenderTexture(float x,float y,float w,float h) = 0;
virtual void RenderTexture(const Rectf& rect) = 0;
DECLARE_OBJECT(GuiBrush)
};
可以看出比较简单 没有什么复杂的东西!
在GUI部分
引擎还会陆续加入以下对象
1.Widget 基本控件单元
2.Border 控件装饰器
3.Layout 控件布局管理器
4.UIManager UI管理器
5.UIEvent UI消息事件
6.WidgetSort 提供对控件的深度排序
可能还会加入UISurface以提供对控件表面的装饰效果
引擎UI需要达到的高度
1.控件组动态生成(要求源于xml config file)
2.控件自布局
3.灵活简单易用
4.UI引擎和引擎的低聚合
.....