このC ++コードを分解して、それが何をするかを説明します。

`` `
#include "graphics.h"

#include "texture.h"
#include "camera.h"

#define set_color（）sdl_setrenderdrawcolor（handle、color.r、color.g、color.b、color.a）

#define cam Camera :: getActive（）
#define cam_pos cam->ポジション

void Graphics :: drawline（const vec2＆from、const vec2＆to、const color＆color）{
    set_color（）;
    vec2 f = from -cam_pos;
    sdl_renderdrawlinef（handle、f.x、f.y、to.x、to.y）;
}

Void Graphics :: Drawline（const vec2＆origin、const vec2＆direction、
                        const vec2＆length、const color＆color）{
    ドローライン（起源、起源 +方向 *長さ、色）;
}

voidグラフィック:: drawpoint（const vec2＆position、const color＆color）{
    set_color（）;
    vec2 p = position -cam_pos;
    sdl_renderdrawpointf（handle、position.x、position.y）;
}

void Graphics :: Drawrect（const rect＆rect、const color＆color）{
    set_color（）;
    sdl_frect r = rect;
    r.x- = cam_pos.x;
    R.Y- = CAM_POS.Y;
    SDL_RENDERDRAWRECTF（ハンドル、＆r）;
}

void Graphics :: fillrect（const rect＆rect、const color＆color）{
    set_color（）;
    sdl_frect r = rect;
    r.x- = cam_pos.x;
    R.Y- = CAM_POS.Y;
    SDL_RENDERFILLRECTF（ハンドル、＆r）;
}
`` `
これはC ++で記述されたコードであり、グラフィックライブラリの一部であるように見えます。このコードは、線、ポイント、長方形など、画面にさまざまな形状を描画するために使用される多くの関数を定義します。

コードの上部にある#includeステートメントは、コードで使用されるクラスに必要なヘッダーをインポートします。このコードで定義されているグラフィッククラスは、コードに含まれるテクスチャクラスとカメラクラスに依存します。

#defineステートメントは、コードの後半で使用できるマクロを定義します。SET_COLORマクロは、SDL_SETRENDERDRAWCOLOR関数を使用して、グラフィックハンドルのレンダリング色を設定します。CAMおよびCAM_POSマクロは、それぞれアクティブなカメラとその位置を取得します。

最初の関数であるドローラインは、2つのポイント間の境界線を描き、それは色の引数を取ります。関数は、各ポイントからカメラの位置を差し引き、カメラの位置に対してラインが描画されるようにします。SDL_RENDERDRAWLINEF関数は、ラインを描画するために使用されます。

2番目の関数であるドローラインは、起源、方向、長さの線を描画し、色の引数が必要です。この関数は、最初のドローライン関数を呼び出し、原点と原点と方向に長さを2つの点として掛けます。

3番目の関数であるDrawPointは、指定された位置にポイントを描画し、色の引数が必要です。関数は、位置からカメラの位置を差し引き、SDL_RENDERDRAWPOINTF関数を使用してポイントを描画します。

4番目の関数であるDrawRectは、長方形の輪郭を描き、色の引数が必要です。この関数は、長方形の位置からカメラの位置を差し引き、SDL_RENDERDRAWRECTF関数を使用して長方形を描画します。

5番目の関数であるFillRectは、指定された色で長方形を埋め、色の引数が必要です。この関数は、長方形の位置からカメラの位置を差し引き、SDL_RENDERFILLECTF関数を使用して長方形を埋めます。