From 453809c8dc2eb647911dde7e16851dfb070c9179 Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Tue, 6 Oct 2020 20:59:22 -0400 Subject: [PATCH] first stab at pulling out renderer to new library --- Makefile | 47 ++++++++++++--------- src/gooey.cpp | 4 +- src/gooey.h | 2 +- src/hexgame.cpp | 7 +-- src/hexgame.h | 2 +- src/hexgrid.h | 2 +- src/render/Makefile | 34 +++++++++++++++ src/{ => render}/camera.cpp | 0 src/{ => render}/camera.h | 2 +- src/{ => render}/entity.cpp | 0 src/{ => render}/entity.h | 2 +- src/{ => render}/mesh.cpp | 0 src/{ => render}/mesh.h | 2 +- src/{ => render}/platform_wait_for_vblank.h | 0 src/{ => render}/render_group.cpp | 2 +- src/{ => render}/render_group.h | 2 +- src/{ => render}/renderer.cpp | 0 src/{ => render}/renderer.h | 4 +- src/scene_loader.cpp | 4 +- src/scene_loader.h | 4 +- 20 files changed, 81 insertions(+), 39 deletions(-) create mode 100644 src/render/Makefile rename src/{ => render}/camera.cpp (100%) rename src/{ => render}/camera.h (97%) rename src/{ => render}/entity.cpp (100%) rename src/{ => render}/entity.h (97%) rename src/{ => render}/mesh.cpp (100%) rename src/{ => render}/mesh.h (97%) rename src/{ => render}/platform_wait_for_vblank.h (100%) rename src/{ => render}/render_group.cpp (99%) rename src/{ => render}/render_group.h (99%) rename src/{ => render}/renderer.cpp (100%) rename src/{ => render}/renderer.h (96%) diff --git a/Makefile b/Makefile index eef3363..58b4185 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,8 @@ CXX = g++ CXXFLAGS = -std=c++11 -g -ggdb3 -Wall -I/usr/include/SDL2 -Iext/aixlog/include -Iext/stb_libs -SRC_DIR = src -OBJ_DIR = build +SRCDIR = src +OBJDIR = build # TODO: incorporate imgui into project files and not use gl3w # can also remove -ldl from LDFLAGS then @@ -14,7 +14,8 @@ GL3W_LDFLAGS += -ldl # libGLEW needs to be >= 2.0.0 to use opengl core context # don't know a good way to require this in make without forcing a specific version -LDFLAGS = -lSDL2 -lGLEW -lGL +#LDFLAGS = -lSDL2 -lGLEW -lGL +LDFLAGS = -lSDL2 -lGL # IMGUI IMGUI_DIR = ext/imgui @@ -28,23 +29,29 @@ IMGUI_SOURCES = $(IMGUI_DIR)/imgui.cpp \ $(IMGUI_DIR)/examples/imgui_impl_opengl3.cpp \ $(IMGUI_DIR)/examplex/imgui_impl_sdl.cpp \ -IMGUI_OBJECTS := $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(notdir $(IMGUI_SOURCES))) +IMGUI_OBJECTS := $(patsubst %.cpp, $(OBJDIR)/%.o, $(notdir $(IMGUI_SOURCES))) # assimp LDFLAGS += -lassimp -SOURCES = $(wildcard $(SRC_DIR)/*.cpp) -OBJECTS = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SOURCES)) +SOURCES = $(wildcard $(SRCDIR)/*.cpp) +OBJECTS = $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SOURCES)) -all: $(IMGUI_OBJECTS) $(OBJ_DIR)/gl3w.o $(OBJECTS) - $(CXX) -o $(OBJ_DIR)/hexgame $(LDFLAGS) $(GL3W_LDFLAGS) $(OBJ_DIR)/*.o + +all: $(IMGUI_OBJECTS) $(OBJDIR)/gl3w.o $(OBJECTS) renderer + $(CXX) -o $(OBJDIR)/hexgame $(LDFLAGS) $(GL3W_LDFLAGS) $(OBJDIR)/*.o $(OBJDIR)/librender.a mkdir -p bin - mv $(OBJ_DIR)/hexgame bin + mv $(OBJDIR)/hexgame bin +.PHONY: all + +renderer: + $(MAKE) -C $(SRCDIR)/render + cp $(SRCDIR)/render/build/librender.a $(OBJDIR) --include $(OBJ_DIR)/*.d +-include $(OBJDIR)/*.d -$(OBJECTS): $(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp +$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp $(CXX) $(CXXFLAGS) -c -MMD $< -o $@ info: @@ -54,28 +61,28 @@ info: @echo $(OBJECTS) # NOTE: couldn't find a nicer way to put these object files into build directory :( -$(OBJ_DIR)/imgui.o: +$(OBJDIR)/imgui.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/imgui.cpp -o $@ -$(OBJ_DIR)/imgui_demo.o: +$(OBJDIR)/imgui_demo.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/imgui_demo.cpp -o $@ -$(OBJ_DIR)/imgui_draw.o: +$(OBJDIR)/imgui_draw.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/imgui_draw.cpp -o $@ -$(OBJ_DIR)/imgui_widgets.o: +$(OBJDIR)/imgui_widgets.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/imgui_widgets.cpp -o $@ -$(OBJ_DIR)/imgui_impl_opengl3.o: +$(OBJDIR)/imgui_impl_opengl3.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/examples/imgui_impl_opengl3.cpp -o $@ -$(OBJ_DIR)/imgui_impl_sdl.o: +$(OBJDIR)/imgui_impl_sdl.o: $(CXX) -c $(CXXFLAGS) $(IMGUI_DIR)/examples/imgui_impl_sdl.cpp -o $@ -$(OBJ_DIR)/gl3w.o: +$(OBJDIR)/gl3w.o: $(CC) -c $(GL3W_CFLAGS) $(IMGUI_DIR)/examples/libs/gl3w/GL/gl3w.c -o $@ .PHONY: clean clean: - rm -f bin/hexgame $(OBJ_DIR)/* - + rm -f bin/hexgame $(OBJDIR)/* + $(MAKE) -C $(SRCDIR)/render clean diff --git a/src/gooey.cpp b/src/gooey.cpp index 93458d6..b267a80 100644 --- a/src/gooey.cpp +++ b/src/gooey.cpp @@ -11,8 +11,8 @@ #include "examples/imgui_impl_sdl.h" #include "examples/imgui_impl_opengl3.h" -#include "camera.h" -#include "entity.h" +#include "render/camera.h" +#include "render/entity.h" #include "hexgrid.h" #include "gooey.h" #include "util.h" diff --git a/src/gooey.h b/src/gooey.h index 03435fa..6bcf315 100644 --- a/src/gooey.h +++ b/src/gooey.h @@ -2,7 +2,7 @@ #pragma once #include "hexgame.h" -#include "renderer.h" +#include "render/renderer.h" bool gooInit(SDL_Handles &handles, v2i vp_dims); diff --git a/src/hexgame.cpp b/src/hexgame.cpp index 0a68f2c..5b085df 100644 --- a/src/hexgame.cpp +++ b/src/hexgame.cpp @@ -31,9 +31,10 @@ #include "gooey.h" #include "hexgame.h" -#include "mesh.h" -#include "platform_wait_for_vblank.h" -#include "renderer.h" +#include "render/mesh.h" +#include "render/platform_wait_for_vblank.h" +#include "render/renderer.h" +#include "render/entity.h" #include "scene_loader.h" #include "util.h" diff --git a/src/hexgame.h b/src/hexgame.h index c983750..5998b66 100644 --- a/src/hexgame.h +++ b/src/hexgame.h @@ -3,7 +3,7 @@ #include -#include "entity.h" +#include "render/entity.h" #include "hexgrid.h" #include "util.h" diff --git a/src/hexgrid.h b/src/hexgrid.h index b82d7ca..bf5bbb8 100644 --- a/src/hexgrid.h +++ b/src/hexgrid.h @@ -5,7 +5,7 @@ #include #include "hexlib.h" -#include "render_group.h" +#include "render/render_group.h" #include "util.h" diff --git a/src/render/Makefile b/src/render/Makefile new file mode 100644 index 0000000..6af2784 --- /dev/null +++ b/src/render/Makefile @@ -0,0 +1,34 @@ + +CXX = g++ +CXXFLAGS = -std=c++11 -g -ggdb3 -Wall -I/usr/include/SDL2 +OBJDIR = build + +# TODO: remove aixlog +CXXFLAGS += -I../../ext/aixlog/include + +# TODO: switch from gl3w to glew +IMGUI_DIR = ../../ext/imgui +CC = gcc +GL3W_CFLAGS = -g -Wall -I$(IMGUI_DIR)/examples/libs/gl3w +CXXFLAGS += -I$(IMGUI_DIR)/examples/libs/gl3w +GL3W_LDFLAGS += -ldl + +RENDER_SOURCES = $(wildcard *.cpp) +RENDER_OBJECTS = $(patsubst %.cpp,$(OBJDIR)/%.o,$(RENDER_SOURCES)) + + +all: $(RENDER_OBJECTS) $(OBJDIR)/gl3w.o + ar -crs $(OBJDIR)/librender.a $(RENDER_OBJECTS) +.PHONY: all + +-include $(OBJDIR)/*.d + +$(RENDER_OBJECTS): $(OBJDIR)/%.o : %.cpp + $(CXX) $(CXXFLAGS) -c -MMD $< -o $@ + +$(OBJDIR)/gl3w.o: + $(CC) -c $(GL3W_CFLAGS) $(IMGUI_DIR)/examples/libs/gl3w/GL/gl3w.c -o $@ + +.PHONY: clean +clean: + rm $(OBJDIR)/* diff --git a/src/camera.cpp b/src/render/camera.cpp similarity index 100% rename from src/camera.cpp rename to src/render/camera.cpp diff --git a/src/camera.h b/src/render/camera.h similarity index 97% rename from src/camera.h rename to src/render/camera.h index b545645..c2ea00e 100644 --- a/src/camera.h +++ b/src/render/camera.h @@ -2,7 +2,7 @@ #pragma once #include #include -#include "util.h" +#include "../util.h" struct camera diff --git a/src/entity.cpp b/src/render/entity.cpp similarity index 100% rename from src/entity.cpp rename to src/render/entity.cpp diff --git a/src/entity.h b/src/render/entity.h similarity index 97% rename from src/entity.h rename to src/render/entity.h index a134580..6246b66 100644 --- a/src/entity.h +++ b/src/render/entity.h @@ -4,7 +4,7 @@ #include #include -#include "hexgrid.h" +#include "../hexgrid.h" #include "mesh.h" #include "render_group.h" diff --git a/src/mesh.cpp b/src/render/mesh.cpp similarity index 100% rename from src/mesh.cpp rename to src/render/mesh.cpp diff --git a/src/mesh.h b/src/render/mesh.h similarity index 97% rename from src/mesh.h rename to src/render/mesh.h index dde1486..8f4b729 100644 --- a/src/mesh.h +++ b/src/render/mesh.h @@ -7,7 +7,7 @@ #include -#include "util.h" +#include "../util.h" struct meMeshInfo { diff --git a/src/platform_wait_for_vblank.h b/src/render/platform_wait_for_vblank.h similarity index 100% rename from src/platform_wait_for_vblank.h rename to src/render/platform_wait_for_vblank.h diff --git a/src/render_group.cpp b/src/render/render_group.cpp similarity index 99% rename from src/render_group.cpp rename to src/render/render_group.cpp index ff1cd0d..5c22f8a 100644 --- a/src/render_group.cpp +++ b/src/render/render_group.cpp @@ -9,7 +9,7 @@ #include "aixlog.hpp" #include "render_group.h" -#include "util.h" +#include "../util.h" #define INFO_LOG_MAX_LENGTH 312 diff --git a/src/render_group.h b/src/render/render_group.h similarity index 99% rename from src/render_group.h rename to src/render/render_group.h index d04a368..1c7476a 100644 --- a/src/render_group.h +++ b/src/render/render_group.h @@ -4,7 +4,7 @@ #include #include -#include "util.h" +#include "../util.h" // TODO: can these structs be used as opaque pointers? diff --git a/src/renderer.cpp b/src/render/renderer.cpp similarity index 100% rename from src/renderer.cpp rename to src/render/renderer.cpp diff --git a/src/renderer.h b/src/render/renderer.h similarity index 96% rename from src/renderer.h rename to src/render/renderer.h index 913f3bc..91780f4 100644 --- a/src/renderer.h +++ b/src/render/renderer.h @@ -13,9 +13,9 @@ #include "camera.h" #include "entity.h" -#include "hexgrid.h" +#include "../hexgrid.h" #include "render_group.h" -#include "util.h" +#include "../util.h" struct SDL_Handles diff --git a/src/scene_loader.cpp b/src/scene_loader.cpp index c5964eb..87a1200 100644 --- a/src/scene_loader.cpp +++ b/src/scene_loader.cpp @@ -9,9 +9,9 @@ #include #include "aixlog.hpp" -#include "entity.h" +#include "render/entity.h" #include "hexlib.h" -#include "mesh.h" +#include "render/mesh.h" #include "scene_loader.h" diff --git a/src/scene_loader.h b/src/scene_loader.h index 9749426..12a993a 100644 --- a/src/scene_loader.h +++ b/src/scene_loader.h @@ -1,9 +1,9 @@ #pragma once -#include "camera.h" +#include "render/camera.h" #include "hexgrid.h" -#include "render_group.h" +#include "render/render_group.h" #include "util.h"