diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-04-01 13:57:23 +0100 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-04-01 13:57:23 +0100 |
commit | 2bcac034841473bec27dcadc27a3b434b527abe0 (patch) | |
tree | 0ee56e165dc3f787423f1a0669425f145cdc461b | |
parent | eb8f03ac327b62bf1b8afa3fcd7dfd8d8ed86e05 (diff) | |
download | Arider-2bcac034841473bec27dcadc27a3b434b527abe0.tar.gz Arider-2bcac034841473bec27dcadc27a3b434b527abe0.zip |
Made zedengine library
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | CMakeLists.txt | 38 | ||||
-rw-r--r-- | include/arider_config.hpp | 2 | ||||
-rw-r--r-- | include/game.hpp | 1 | ||||
-rw-r--r-- | res/shaders/color_shading.frag | 5 | ||||
-rw-r--r-- | src/game.cpp | 45 | ||||
-rw-r--r-- | src/main.cpp | 4 | ||||
-rw-r--r-- | zedengine/CMakeLists.txt | 18 | ||||
-rw-r--r-- | zedengine/include/gl_texture.hpp (renamed from include/gl_texture.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/glsl_program.hpp (renamed from include/glsl_program.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/image_loader.hpp (renamed from include/image_loader.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/io_manager.hpp (renamed from include/io_manager.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/logger.hpp | 24 | ||||
-rw-r--r-- | zedengine/include/pico_png.hpp (renamed from include/pico_png.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/resource_manager.hpp (renamed from include/resource_manager.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/sprite.hpp (renamed from include/sprite.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/texture_cache.hpp (renamed from include/texture_cache.hpp) | 0 | ||||
-rw-r--r-- | zedengine/include/vertex.hpp (renamed from include/vertex.hpp) | 9 | ||||
-rw-r--r-- | zedengine/src/glsl_program.cpp (renamed from src/glsl_program.cpp) | 2 | ||||
-rw-r--r-- | zedengine/src/image_loader.cpp (renamed from src/image_loader.cpp) | 0 | ||||
-rw-r--r-- | zedengine/src/io_manager.cpp (renamed from src/io_manager.cpp) | 0 | ||||
-rw-r--r-- | zedengine/src/pico_png.cpp (renamed from src/pico_png.cpp) | 0 | ||||
-rw-r--r-- | zedengine/src/resource_manager.cpp (renamed from src/resource_manager.cpp) | 0 | ||||
-rw-r--r-- | zedengine/src/sprite.cpp (renamed from src/sprite.cpp) | 0 | ||||
-rw-r--r-- | zedengine/src/texture_cache.cpp (renamed from src/texture_cache.cpp) | 0 |
25 files changed, 119 insertions, 30 deletions
@@ -6,6 +6,7 @@ CMakeFiles/ # extensions to ignore *.o *.out +*.a # general files to ignore CMakeCache.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 437a9ad..8726e5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.0) project(arider) # set version number @@ -6,34 +6,31 @@ set(ARIDER_MAJOR_VERSION 0) set(ARIDER_MINOR_VERSION 1) set(ARIDER_PATCH_VERSION 0) set(ARIDER_VERSION - ${ARIDER_MAJOR_VERSION}.${ARIDER_MINOR_VERSION}.${ARIDER_PATCH_VERSION}) + ${ARIDER_MAJOR_VERSION}.${ARIDERn_MINOR_VERSION}.${ARIDER_PATCH_VERSION}) # set standard set(CMAKE_CXX_STANDARD 14) # set include directories -set(ARIDER_INCLUDE_DIR "include/") +set(ARIDER_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include) # setting right output directory -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) + + +set(ZEDENGINE_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/zedengine/include/) +set(ZEDENGINE_LIBRARIES zedengine) # setting up configuration header configure_file ( - "config/arider_config.hpp.in" - "include/arider_config.hpp" + ${CMAKE_SOURCE_DIR}/config/arider_config.hpp.in + ${CMAKE_SOURCE_DIR}/include/arider_config.hpp ) # adding my executable add_executable(${PROJECT_NAME} - src/main.cpp - src/game.cpp - src/glsl_program.cpp - src/image_loader.cpp - src/io_manager.cpp - src/pico_png.cpp - src/sprite.cpp - src/resource_manager.cpp - src/texture_cache.cpp) + ${CMAKE_SOURCE_DIR}/src/game.cpp + ${CMAKE_SOURCE_DIR}/src/main.cpp) # adding sdl2 library include(FindPkgConfig) @@ -41,14 +38,19 @@ find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) pkg_search_module(SDL2 REQUIRED sdl2) +# add zedengine library +add_subdirectory(zedengine) + # adding include directories -include_directories(${ARIDER_INCLUDE_DIR} +include_directories(${ARIDER_INCLUDE_DIRS} + ${ZEDENGINE_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS} - ${SDL2_INCLUDE_DIRS}) + ${SLD2_INCLUDE_DIRS}) # link libraries -target_link_libraries(${PROJECT_NAME} +target_link_libraries(${CMAKE_PROJECT_NAME} + ${ZEDENGINE_LIBRARIES} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} ${SDL2_LIBRARIES}) diff --git a/include/arider_config.hpp b/include/arider_config.hpp index 9afa2e9..f71fe78 100644 --- a/include/arider_config.hpp +++ b/include/arider_config.hpp @@ -2,4 +2,4 @@ #define ARIDER_MAJOR_VERSION 0 #define ARIDER_MINOR_VERSION 1 #define ARIDER_PATCH_VERSION 0 -#define ARIDER_VERSION 0.1.0 +#define ARIDER_VERSION 0..0 diff --git a/include/game.hpp b/include/game.hpp index a5443a0..1991ebe 100644 --- a/include/game.hpp +++ b/include/game.hpp @@ -35,6 +35,7 @@ private: void processInput(); void gameLoop(); void drawGame(); + float calculateFps(); public: Game(); ~Game(); diff --git a/res/shaders/color_shading.frag b/res/shaders/color_shading.frag index 059218c..5b70355 100644 --- a/res/shaders/color_shading.frag +++ b/res/shaders/color_shading.frag @@ -7,14 +7,13 @@ in vec2 fragment_uv; out vec4 color; uniform float time; -uniform sampler2D sampler; +uniform sampler2D texture_sampler; void main() { - vec4 texture_color = texture(sampler, fragment_uv); + vec4 texture_color = texture(texture_sampler, fragment_uv); // color = texture_color * fragment_color; - color = texture_color * vec4(fragment_color.g*(cos(fragment_position.x*4.0+time)+1.0)/2.0, fragment_color.r*(cos(fragment_position.y*8.0+time)+1.0)/2.0, fragment_color.r*(sin(fragment_position.x*2.0+time)+1.0)/2.0, diff --git a/src/game.cpp b/src/game.cpp index 4c2e122..125c655 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -2,6 +2,7 @@ #include "sprite.hpp" #include <stdexcept> +#include <iostream> Game::Game() {} @@ -17,21 +18,28 @@ void Game::initSystems() if(SDL_Init(SDL_INIT_VIDEO)) throw std::runtime_error("SDL_Init failed"); + // SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 4); + // SDL_GL_SetAttribute (SDL_GL_CONTEXT_MINOR_VERSION, 5); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + window_ = SDL_CreateWindow("Arider", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width_, height_, SDL_WINDOW_OPENGL); if(window_ == nullptr) throw std::runtime_error("SDL_CreateWindow failed"); - SDL_GLContext glContext = SDL_GL_CreateContext(window_); - if(glContext == nullptr) + SDL_GLContext gl_context = SDL_GL_CreateContext(window_); + if(gl_context == nullptr) throw std::runtime_error("SDL_GL_CreateContext failed"); GLenum error = glewInit(); if(error != GLEW_OK) throw std::runtime_error("glewInit failed"); + std::cout<<"*** OpenGL version: "<<glGetString(GL_VERSION)<<" ***\n"; + + SDL_GL_SetSwapInterval(1); + glClearColor(0.f, 0.f, 0.f, 1.f); initShaders(); @@ -67,6 +75,7 @@ void Game::gameLoop() processInput(); drawGame(); time_ += 0.05; + // std::cout<<calculateFps()<<'\n'; } } @@ -79,7 +88,7 @@ void Game::drawGame() program_.use(); glActiveTexture(GL_TEXTURE0); - GLint texture_location = program_.getUniformLocation("sampler"); + GLint texture_location = program_.getUniformLocation("texture_sampler"); glUniform1i(texture_location, 0); GLint time_location = program_.getUniformLocation("time"); @@ -108,3 +117,33 @@ void Game::run() sprites_.back()->init(-1.f, 0.f, 1.f, 1.f, "res/platformer_png/Player/p1_duck.png"); gameLoop(); } + +float Game::calculateFps() +{ + static const int NUM_SAMPLES = 100; + static float frame_times[NUM_SAMPLES]; + static float prev_ticks = SDL_GetTicks(); + static unsigned current_frame = 0; + + float current_ticks = SDL_GetTicks(); + + frame_times[current_frame%NUM_SAMPLES] = current_ticks-prev_ticks; + prev_ticks = current_ticks; + + int count = NUM_SAMPLES; + if(current_frame<NUM_SAMPLES) + count = current_frame; + + float frame_time_average = 0; + for(int i = 0; i < count; ++i) + frame_time_average += frame_times[i]; + frame_time_average /= count; + + float fps = 60.f; + if(frame_time_average>0) + fps = 1000.f/frame_time_average; + + ++current_frame; + + return fps; +} diff --git a/src/main.cpp b/src/main.cpp index f8e06e8..bae9033 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,9 +1,11 @@ #include "arider_config.hpp" #include "game.hpp" +#include "logger.hpp" + +#include <GL/glew.h> #include <exception> #include <iostream> -#include <SDL2/SDL.h> int main() { diff --git a/zedengine/CMakeLists.txt b/zedengine/CMakeLists.txt new file mode 100644 index 0000000..d64d0a7 --- /dev/null +++ b/zedengine/CMakeLists.txt @@ -0,0 +1,18 @@ +# zedengine library cmakelists.txt + +project(zedengine) + +# add sources to library +set(ZEDENGINE_SOURCES ${PROJECT_SOURCE_DIR}/src/glsl_program.cpp + ${PROJECT_SOURCE_DIR}/src/image_loader.cpp + ${PROJECT_SOURCE_DIR}/src/io_manager.cpp + ${PROJECT_SOURCE_DIR}/src/pico_png.cpp + ${PROJECT_SOURCE_DIR}/src/resource_manager.cpp + ${PROJECT_SOURCE_DIR}/src/sprite.cpp + ${PROJECT_SOURCE_DIR}/src/texture_cache.cpp) + +# set include directory +include_directories(${ZEDENGINE_INCLUDE_DIRS}) + +# make it a static library +add_library(${PROJECT_NAME} ${ZEDENGINE_SOURCES}) diff --git a/include/gl_texture.hpp b/zedengine/include/gl_texture.hpp index 808d86b..808d86b 100644 --- a/include/gl_texture.hpp +++ b/zedengine/include/gl_texture.hpp diff --git a/include/glsl_program.hpp b/zedengine/include/glsl_program.hpp index cef38a8..cef38a8 100644 --- a/include/glsl_program.hpp +++ b/zedengine/include/glsl_program.hpp diff --git a/include/image_loader.hpp b/zedengine/include/image_loader.hpp index 5f7b97f..5f7b97f 100644 --- a/include/image_loader.hpp +++ b/zedengine/include/image_loader.hpp diff --git a/include/io_manager.hpp b/zedengine/include/io_manager.hpp index 05d288b..05d288b 100644 --- a/include/io_manager.hpp +++ b/zedengine/include/io_manager.hpp diff --git a/zedengine/include/logger.hpp b/zedengine/include/logger.hpp new file mode 100644 index 0000000..36c7b9b --- /dev/null +++ b/zedengine/include/logger.hpp @@ -0,0 +1,24 @@ +#ifndef LOGGER_HPP +#define LOGGER_HPP + +#include <string> + +class Logger +{ +public: + template<typename Tail> + static std::string log(std::ostream &out, Tail &&tail) + { + out<<tail; + } + + template<typename Head, typename... Tail> + static std::string log(std::ostream &out, Head &&head, Tail &&...tail) + { + out<<std::forward<Head>(head); + log(out, std::forward<Tail>(tail)...); + } +}; + + +#endif diff --git a/include/pico_png.hpp b/zedengine/include/pico_png.hpp index ef12357..ef12357 100644 --- a/include/pico_png.hpp +++ b/zedengine/include/pico_png.hpp diff --git a/include/resource_manager.hpp b/zedengine/include/resource_manager.hpp index 155515a..155515a 100644 --- a/include/resource_manager.hpp +++ b/zedengine/include/resource_manager.hpp diff --git a/include/sprite.hpp b/zedengine/include/sprite.hpp index 9f765c7..9f765c7 100644 --- a/include/sprite.hpp +++ b/zedengine/include/sprite.hpp diff --git a/include/texture_cache.hpp b/zedengine/include/texture_cache.hpp index 44dba2f..44dba2f 100644 --- a/include/texture_cache.hpp +++ b/zedengine/include/texture_cache.hpp diff --git a/include/vertex.hpp b/zedengine/include/vertex.hpp index d416405..d9ab113 100644 --- a/include/vertex.hpp +++ b/zedengine/include/vertex.hpp @@ -29,19 +29,22 @@ struct Vertex Color color; UV uv; - void setPosition(float x, float y) { + void setPosition(float x, float y) + { position.x = x; position.y = y; } - void setColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a) { + void setColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a) + { color.r = r; color.g = g; color.b = b; color.a = a; } - void setUv(float u, float v) { + void setUv(float u, float v) + { uv.u = u; uv.v = v; } diff --git a/src/glsl_program.cpp b/zedengine/src/glsl_program.cpp index 33a3f53..6fe7cf0 100644 --- a/src/glsl_program.cpp +++ b/zedengine/src/glsl_program.cpp @@ -118,7 +118,7 @@ void GlslProgram::addAttribute(const std::string &attribute_name) GLint GlslProgram::getUniformLocation(const std::string &uniform_name) { GLint location = glGetUniformLocation(program_id_, uniform_name.c_str()); - if(location == GL_INVALID_INDEX) + if((GLuint)location == GL_INVALID_INDEX) throw std::runtime_error("'"+uniform_name+"' not found"); return location; } diff --git a/src/image_loader.cpp b/zedengine/src/image_loader.cpp index bb5485d..bb5485d 100644 --- a/src/image_loader.cpp +++ b/zedengine/src/image_loader.cpp diff --git a/src/io_manager.cpp b/zedengine/src/io_manager.cpp index 106dd24..106dd24 100644 --- a/src/io_manager.cpp +++ b/zedengine/src/io_manager.cpp diff --git a/src/pico_png.cpp b/zedengine/src/pico_png.cpp index 6e86634..6e86634 100644 --- a/src/pico_png.cpp +++ b/zedengine/src/pico_png.cpp diff --git a/src/resource_manager.cpp b/zedengine/src/resource_manager.cpp index 7bd8dd4..7bd8dd4 100644 --- a/src/resource_manager.cpp +++ b/zedengine/src/resource_manager.cpp diff --git a/src/sprite.cpp b/zedengine/src/sprite.cpp index 5821eb8..5821eb8 100644 --- a/src/sprite.cpp +++ b/zedengine/src/sprite.cpp diff --git a/src/texture_cache.cpp b/zedengine/src/texture_cache.cpp index c57538b..c57538b 100644 --- a/src/texture_cache.cpp +++ b/zedengine/src/texture_cache.cpp |