user1508519
user1508519

Reputation:

Create a 1x1 texture in SDL 2.0

In C# and XNA, you can create a 1x1 texture like this:

Texture2D white_pixel;
white_pixel = new Texture2D(GraphicsDevice, 1, 1);
white_pixel.SetData<Color[]>(new Color{ Color.White });
// Sorry if I got the syntax wrong, it's been a while

Then later on, you can arbitrarily draw the pixel to any size and color by doing this:

spriteBatch.Begin();
spriteBatch.Draw(white_pixel, new Rectangle(0, 0, width, height), Color.Whatever);
spriteBatch.End();

What is the equivalent in SDL?

SDL_Texture *tex = nullptr;
SDL_CreateTexture(renderer,
                               Uint32        format, // What do I put here
                               int           access, // and here
                               1
                               1);
// Not sure if this is correct
SDL_SetTextureColorMod(tex,
                       255,
                       255,
                       255)
SDL_Rect rect;
rect.x = 0;
rect.y = 0;
rect.w = 10;
rect.h = 10;
SDL_RenderCopy(renderer, tex, nullptr, &rect);  

Upvotes: 1

Views: 399

Answers (1)

genpfault
genpfault

Reputation: 52155

SDL_PIXELFORMAT_RGB24/SDL_PIXELFORMAT_BGR24 for format and SDL_TEXTUREACCESS_STATIC for access would be a good start.

Or you could just draw a colored rectangle directly via SDL_SetRenderDrawColor() and SDL_RenderFillRect().

Upvotes: 0

Related Questions