====== HelloSDL-window ======
作成日: 2023-07-21 (金)
[[https://youtu.be/x2xPsXAY50o|初心者によるC++入門 #31 SDLのウィンドウを表示する]]
{{:youtube:hellosdl-window.png?400|}}
===== main.cpp =====
#include
#include
int main(int argc, char **argv) {
int const ScreenWidth = 400;
int const ScreenHeight = 400;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
std::cerr << "Error: init SDL\n";
std::exit(1);
}
SDL_Window *window = SDL_CreateWindow(
"HelloSDL window",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
ScreenWidth,
ScreenHeight,
0);
if (window == nullptr) {
std::cerr << "Error: create window\n";
std::exit(1);
}
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (renderer == nullptr) {
std::cerr << "Error: create renderer\n";
std::exit(1);
}
bool running = true;
while (running) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
running = false;
}
}
SDL_SetRenderDrawColor(renderer, 100, 100, 255, 255);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_Rect rect{100, 150, 150, 100};
SDL_RenderFillRect(renderer, &rect);
SDL_RenderPresent(renderer);
SDL_Delay(1);
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
return 0;
}
===== Makefile =====
SRCS = \
main.cpp
OBJS = ${SRCS:%.cpp=%.o}
DEPS = ${SRCS:%.cpp=%.d}
EXECUTABLE = HelloSDL-window.exe
CXXFLAGS = -IC:\SDL2\include
LDFLAGS = -LC:\SDL2\lib
LDLIBS = -lmingw32 -lSDL2main -lSDL2
.PHONY: all
all: ${EXECUTABLE}
${EXECUTABLE}: ${OBJS}
${CXX} -o $@ $^ ${LDFLAGS} ${LDLIBS}
%.o: %.cpp
${CXX} -c -o $@ $< -MMD -MP ${CXXFLAGS}
.PHONY: clean
clean:
${RM} ${EXECUTABLE} ${OBJS} ${DEPS}
-include ${DEPS}
''C:\SDL2''の部分は、SDLをインストールした場所を指定します。