2D游戏引擎 | 绘图

​ 今天完成绘图方面的工作,包含绘制点、绘制线、绘制圆形、绘制多边形、清除画布、更新画布。使用SDL将这些功能封装成2DGEDraw头文件。颜色都是用RGB配色,除了绘制多边形还存在一个参数就是透明度a,使用窗口的相对坐标,原点在窗口左上角。

函数介绍

1. void Brush::Clear(int r, int g, int b, int a)

清除画布,使用指定的ARGB颜色去填充窗口

2. void Brush::show()

更新画布

3. void Brush::DrawPoint(float x, float y, int r, int g, int b, int a)

绘制点,使用指定的ARGB颜色在画布上创建一个像素点

4. void Brush::DrawLine(float x1, float y1, float x2, float y2, int r, int g, int b, int a)

绘制一条直线,使用ARGB颜色以(x1,y1)(x2,y2)为直线2个端点在画布上创建一条直线

5. void Brush::DrawFillCircle(float centreX, float centreY, float radius, int r, int g, int b, int a)

绘制一个用ARGB颜色填充以(centreX,centreY)为圆心,radius为半径的圆形

6. void Brush::DrawFillPolygon(const SDL_Vertex vertices, int num_vertices, const int indices, int num_indices)

绘制一个多边形,顶点使用SDL_Vertex,需提供顶点数,三角形索引,索引数.

例如:绘制一个正5边形

SDL_Vertex vertices[] = {
    {{100, 100},    {255, 0, 0, 255}}, 
    {{150, 100},    {255, 0, 0, 255}}, 
    {{165.4,147.5}, {255, 0, 0, 255}}, 
    {{125,176.9},   {255, 0, 0, 255}},
    {{84.6,147.5},  {255, 0, 0, 255}} 

};

int indices[] = { 
    0, 1, 2,
    2, 3, 0 ,
    3, 4, 0};//顶点三角形索引

brush.DrawFillPolygon(vertices, 5, indices, 9);
最后修改:2024 年 09 月 26 日
如果觉得我的文章对你有用,请随意赞赏