J'essaie de comprendre comment dessiner un rectangle de couleur sur un réseau de pixels unsigned char
moulé à partir du membre pixels
d'un SDL_Surface
verrouillé.Dessin d'un rectangle sur les pixels SDL_Surface
La fonction suivante est censé faire l'ancien:
void draw_rectangle(SDL_Surface* surface, int x, int y, int width, int height)
{
SDL_LockSurface(surface);
//Make each pixel black
std::vector<uint8_t> pixels(surface->h * surface->pitch, 0);
for (int dy = y; dy < height; dy++) {
for (int dx = x; dx < width; dx++) {
pixels[dx + dy] = 0;
pixels[dx + dy + 1] = 255;
pixels[dx + dy + 2] = 0;
}
}
memcpy(surface->pixels, pixels.data(), surface->pitch * surface->h);
SDL_UnlockSurface(surface);
}
Il fonctionne, mais quand le tester en convertissant la surface modifiée à une texture en utilisant SDL_CreateTextureFromSurface
et la copie de la texture à l'écran, il affiche une seule pixel vert: