Skip to content

Commit

Permalink
Use RL_QUADS/RL_TRIANGLES for single-pixel drawing (#2750)
Browse files Browse the repository at this point in the history
Addresses problem mentioned in
#2744 (comment)
(in short: when drawing pixels using DrawPixel{,V} in camera mode,
upscaled pixel becomes a line instead of bigger pixel)
  • Loading branch information
hatkidchan authored Oct 11, 2022
1 parent 4cca234 commit 8ebe62b
Showing 1 changed file with 36 additions and 7 deletions.
43 changes: 36 additions & 7 deletions src/rshapes.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,21 +104,50 @@ void SetShapesTexture(Texture2D texture, Rectangle source)
// Draw a pixel
void DrawPixel(int posX, int posY, Color color)
{
rlBegin(RL_LINES);
rlColor4ub(color.r, color.g, color.b, color.a);
rlVertex2f(posX, posY);
rlVertex2f(posX + 1, posY + 1);
rlEnd();
DrawPixelV((Vector2){ posX, posY }, color);
}

// Draw a pixel (Vector version)
void DrawPixelV(Vector2 position, Color color)
{
rlBegin(RL_LINES);
#if defined(SUPPORT_QUADS_DRAW_MODE)
rlSetTexture(texShapes.id);

rlBegin(RL_QUADS);

rlNormal3f(0.0f, 0.0f, 1.0f);
rlColor4ub(color.r, color.g, color.b, color.a);

rlTexCoord2f(texShapesRec.x/texShapes.width, texShapesRec.y/texShapes.height);
rlVertex2f(position.x, position.y);

rlTexCoord2f(texShapesRec.x/texShapes.width, (texShapesRec.y + texShapesRec.height)/texShapes.height);
rlVertex2f(position.x, position.y + 1);

rlTexCoord2f((texShapesRec.x + texShapesRec.width)/texShapes.width, (texShapesRec.y + texShapesRec.height)/texShapes.height);
rlVertex2f(position.x + 1, position.y + 1);

rlTexCoord2f((texShapesRec.x + texShapesRec.width)/texShapes.width, texShapesRec.y/texShapes.height);
rlVertex2f(position.x + 1, position.y);

rlEnd();

rlSetTexture(0);
#else
rlBegin(RL_TRIANGLES);

rlColor4ub(color.r, color.g, color.b, color.a);

rlVertex2f(position.x, position.y);
rlVertex2f(position.x + 1.0f, position.y + 1.0f);
rlVertex2f(position.x, position.y + 1);
rlVertex2f(position.x + 1, position.y);

rlVertex2f(position.x + 1, position.y);
rlVertex2f(position.x, position.y + 1);
rlVertex2f(position.x + 1, position.y + 1);

rlEnd();
#endif
}

// Draw a line
Expand Down

0 comments on commit 8ebe62b

Please sign in to comment.