在 RayLib 2.6 中尝试绘制矩形时,我发现了这种 "bleeding" 效果
When trying to draw Rectangles in RayLib 2.6 I'm finding this "bleeding" effect
尝试在 RayLib 2.6 中绘制矩形时,我发现了这种 "bleeding" 效果:
bleeding effect
我试图搜索这种效果(我称之为流血的效果),但未能找到正确的名称。
我设法在 this 最小代码示例中重现它:
#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;
}
谢谢!
这是因为 DrawRectangle
函数采用的参数与此代码预期的参数不同。
void DrawRectangle(int posX, int posY, int width, int height, Color color)
注意第三个和第四个参数是width
和height
,不是另一个角的位置坐标
将 DrawRectangle 调用更改为
DrawRectangle(x * TILE_SIZE, y * TILE_SIZE,
TILE_SIZE, TILE_SIZE,
GetMapColor(map[x][y]));
达到预期效果。
尝试在 RayLib 2.6 中绘制矩形时,我发现了这种 "bleeding" 效果: bleeding effect
我试图搜索这种效果(我称之为流血的效果),但未能找到正确的名称。
我设法在 this 最小代码示例中重现它:
#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;
}
谢谢!
这是因为 DrawRectangle
函数采用的参数与此代码预期的参数不同。
void DrawRectangle(int posX, int posY, int width, int height, Color color)
注意第三个和第四个参数是width
和height
,不是另一个角的位置坐标
将 DrawRectangle 调用更改为
DrawRectangle(x * TILE_SIZE, y * TILE_SIZE,
TILE_SIZE, TILE_SIZE,
GetMapColor(map[x][y]));
达到预期效果。