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);