aboutsummaryrefslogtreecommitdiffstats
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 196b735..b1c7af8 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -1,4 +1,5 @@
#include "game.hpp"
+#include "image_loader.hpp"
#include "sprite.hpp"
#include <stdexcept>
@@ -31,7 +32,18 @@ void Game::initSystems()
throw std::runtime_error("glewInit failed");
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
- glClearColor(0.f, 0.f, 1.f, 1.f);
+ glClearColor(0.f, 0.f, 0.f, 1.f);
+
+ initShaders();
+}
+
+void Game::initShaders()
+{
+ program_.compileShaders("res/shaders/color_shading.vert", "res/shaders/color_shading.frag");
+ program_.addAttribute("vertex_position");
+ program_.addAttribute("vertex_color");
+ program_.addAttribute("vertex_uv");
+ program_.linkShaders();
}
void Game::processInput()
@@ -49,14 +61,12 @@ void Game::processInput()
}
void Game::gameLoop()
-{
- Sprite sprite;
- sprite.init(-1.f, -1.f, 1.f, 1.f);
+{
while(game_state_ != GameState::EXIT)
{
processInput();
- sprite.draw();
drawGame();
+ time_ += 0.05;
}
}
@@ -65,6 +75,21 @@ void Game::drawGame()
glClearDepth(1.0);
// clears buffer with clear color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ program_.use();
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, player_texture_.id);
+
+ GLint texture_location = program_.getUniformLocation("sampler");
+ glUniform1i(texture_location, 0);
+
+ GLint time_location = program_.getUniformLocation("time");
+ glUniform1f(time_location, time_);
+
+ sprite_.draw();
+
+ glBindTexture(GL_TEXTURE_2D, 0);
+ program_.unuse();
// swap buffer and draw everything to the screen
SDL_GL_SwapWindow(window_);
@@ -73,5 +98,9 @@ void Game::drawGame()
void Game::run()
{
initSystems();
+
+ sprite_.init(-1.f, -1.f, 2.f, 2.f);
+ player_texture_ = ImageLoader::loadPng("res/platformer_png/Player/p1_front.png");
+
gameLoop();
}