I just upgraded to Mac OS Mojave and one of my SDL projects does not work anymore despite no changes to its code. While trying to isolate the problem I ran into what seems like a bug with SDL_Texture:
int main() {
SDL_version compiled;
SDL_version linked;
SDL_VERSION(&compiled);
SDL_GetVersion(&linked);
printf("We compiled against SDL version %d.%d.%d ...\n",
compiled.major, compiled.minor, compiled.patch);
printf("But we are linking against SDL version %d.%d.%d.\n",
linked.major, linked.minor, linked.patch);
SDL_Window* win = SDL_CreateWindow("test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, 0);
SDL_Renderer* ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_TARGETTEXTURE);
SDL_Texture* tex = SDL_CreateTexture(ren, SDL_PIXELFORMAT_RGBA8888, 400, 300, SDL_TEXTUREACCESS_TARGET);
SDL_RenderClear(ren);
SDL_RenderPresent(ren);
SDL_SetRenderTarget(ren, tex);
SDL_SetRenderDrawColor(ren, 255, 255, 255, 255);
SDL_RenderClear(ren);
SDL_SetRenderTarget(ren, nullptr);
bool running = true;
SDL_Event e{};
while (running) {
while (SDL_PollEvent(&e) != 0) {
if (e.type == SDL_QUIT)
running = false;
}
SDL_SetRenderTarget(ren, nullptr);
SDL_SetRenderDrawColor(ren, 0, 0, 100, 255);
SDL_RenderClear(ren);
SDL_Rect dist{0, 0, 400, 300};
SDL_RenderCopy(ren, tex, nullptr, &dist);
SDL_RenderPresent(ren);
}
SDL_DestroyTexture(tex);
SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
return 0;
}
Displays:
While I obviously expect the texture to have been cleared white.
I had tested both on SDL 2.0.8 and SDL 2.0.9 pre-release.