При попытке нарисовать прямоугольники в RayLib 2.6, я нахожу этот «кровоточащий» эффект - PullRequest
1 голос
/ 05 марта 2020

При попытке нарисовать прямоугольники в RayLib 2.6 я нахожу этот эффект "кровотечения": эффект кровотечения

Я пытался найти этот эффект (тот, который я называю кровотечением), но Мне не удалось найти правильное имя для него.

Мне удалось воспроизвести его в этом примере минимального кода:

#include <raylib.h>

#define MAP_SIZE 64
#define TILE_SIZE 8

static int map[MAP_SIZE][MAP_SIZE];

static Color mappedColor[] = {
    {255, 0, 0, 255},
    {0, 255, 0, 255},
    {0, 0, 255, 255},
};
#define GetMapColor(c) mappedColor[c]

void Render(float dt)
{
    ClearBackground(BLACK);

    for (int x = 0; x < MAP_SIZE; x++)
        for (int y = 0; y < MAP_SIZE; y++)
            DrawRectangle(x * TILE_SIZE, y * TILE_SIZE, (x + 1) * TILE_SIZE, (y + 1) * TILE_SIZE, GetMapColor(map[x][y]));
}

void CreateMap()
{
    for (int x = 0; x < MAP_SIZE; x++)
        for (int y = 0; y < MAP_SIZE; y++)
            map[x][y] = GetRandomValue(0, 3);
}

int main(int argc, char **argv)
{
    InitWindow(800, 600, "Bleeding");
    SetTargetFPS(60);

    CreateMap();

    while (!WindowShouldClose())
    {
        float dt = GetFrameTime();

        BeginDrawing();

        Render(dt);

        EndDrawing();
    }

    CloseWindow();

    return 0;
}

Спасибо!

1 Ответ

0 голосов
/ 03 мая 2020

Это связано с тем, что функция DrawRectangle принимает параметры, отличные от ожидаемых в этом коде.

void DrawRectangle(int posX, int posY, int width, int height, Color color)

Обратите внимание, что 3-й и 4-й параметры width и height, а не координаты положения для другой угол.

Измените вызов DrawRectangle на

DrawRectangle(x * TILE_SIZE, y * TILE_SIZE,
              TILE_SIZE, TILE_SIZE,
              GetMapColor(map[x][y]));

для достижения желаемого эффекта.

...