/* gcc -g screenTest.c -lSDL3 -lGL clang -g screenTest.c -L/opt/homebrew/lib -lSDL3 -framework OpenGL -I/opt/homebrew/include */ #define SDL_MAIN_USE_CALLBACKS 1 #include #include #include #include SDL_Window*window; SDL_Renderer*renderer; SDL_GLContext glContext; int startX; bool glMode, altColor; SDL_AppResult SDL_AppInit(void**appstate, int argc, char*argv[]) { glMode = argc == 2; //glMode = 1; printf(glMode ? "using gl mode\n" : "using default sdl\n"); SDL_SetHint(SDL_HINT_NO_SIGNAL_HANDLERS, "1"); SDL_SetHint(SDL_HINT_VIDEO_DOUBLE_BUFFER, "1"); SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS); int count = SDL_GetNumVideoDrivers(); for(int i=0; itype == SDL_EVENT_QUIT) { return SDL_APP_SUCCESS; } if (event->type == SDL_EVENT_KEY_DOWN) { if (event->key.key == SDLK_ESCAPE) return SDL_APP_SUCCESS; printf("altColor\n"); altColor = !altColor; } return SDL_APP_CONTINUE; } SDL_AppResult SDL_AppIterate(void*appstate) { SDL_SetRenderDrawColorFloat(renderer, 0.1, 0.1, 0.1, 1); SDL_RenderClear(renderer); if (altColor) SDL_SetRenderDrawColorFloat(renderer, .4, .5, .6, 1); else { SDL_SetRenderDrawColorFloat(renderer, .8, .8, .8, 1); } SDL_FRect r={0, 0, 25, 1080*2}; for(int x = startX-50; x < 1920*2; x += 50) { r.x = x; SDL_RenderFillRect(renderer, &r); } startX = (startX+4) % 50; if (glContext) { SDL_FlushRenderer(renderer); glFlush(); SDL_GL_SwapWindow(window); SDL_Delay(16); } else { SDL_RenderPresent(renderer); } // printf("Drawn at %lld\n", SDL_GetTicks()); return SDL_APP_CONTINUE; } void SDL_AppQuit(void *appstate, SDL_AppResult result) { }