From 16915d86d4b866c1fcce7523b0d34e8343ff52fc Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sun, 24 Dec 2017 21:04:38 +0000 Subject: [Code] Simple game example furthered --- examples/resources/breast_black.png | Bin 0 -> 225 bytes examples/resources/dngn_blood_fountain.png | Bin 0 -> 955 bytes examples/resources/textureshader.frag | 16 ++++++++++++++ examples/resources/textureshader.vert | 23 ++++++++++++++++++++ examples/simplegame/dngn_blood_fountain.png | Bin 955 -> 0 bytes examples/simplegame/main.cpp | 32 ++++++++++++++++++---------- examples/simplegame/textureshader.frag | 16 -------------- examples/simplegame/textureshader.vert | 23 -------------------- 8 files changed, 60 insertions(+), 50 deletions(-) create mode 100644 examples/resources/breast_black.png create mode 100644 examples/resources/dngn_blood_fountain.png create mode 100644 examples/resources/textureshader.frag create mode 100644 examples/resources/textureshader.vert delete mode 100644 examples/simplegame/dngn_blood_fountain.png delete mode 100644 examples/simplegame/textureshader.frag delete mode 100644 examples/simplegame/textureshader.vert (limited to 'examples') diff --git a/examples/resources/breast_black.png b/examples/resources/breast_black.png new file mode 100644 index 00000000..180b292f Binary files /dev/null and b/examples/resources/breast_black.png differ diff --git a/examples/resources/dngn_blood_fountain.png b/examples/resources/dngn_blood_fountain.png new file mode 100644 index 00000000..7214fd47 Binary files /dev/null and b/examples/resources/dngn_blood_fountain.png differ diff --git a/examples/resources/textureshader.frag b/examples/resources/textureshader.frag new file mode 100644 index 00000000..ef728b04 --- /dev/null +++ b/examples/resources/textureshader.frag @@ -0,0 +1,16 @@ +#version 450 + +layout(location = 0) in vec2 fragment_position; +layout(location = 1) in vec4 fragment_colour; +layout(location = 2) in vec2 fragment_uv; + +out vec4 colour; + +uniform sampler2D texture_sampler; + +void main() +{ + vec4 texture_color = texture(texture_sampler, fragment_uv); + + colour = texture_color * fragment_colour; +} diff --git a/examples/resources/textureshader.vert b/examples/resources/textureshader.vert new file mode 100644 index 00000000..3277d8b0 --- /dev/null +++ b/examples/resources/textureshader.vert @@ -0,0 +1,23 @@ +#version 450 + +layout(location = 0) in vec2 vertex_position; +layout(location = 1) in vec4 vertex_colour; +layout(location = 2) in vec2 vertex_uv; + +layout(location = 0) out vec2 fragment_position; +layout(location = 1) out vec4 fragment_colour; +layout(location = 2) out vec2 fragment_uv; + +uniform mat4 P; + +void main() +{ + gl_Position.xy = (P*vec4(vertex_position, 0.0, 1.0)).xy; + gl_Position.z = 0.0; + gl_Position.w = 1.0; + + fragment_position = vertex_position; + fragment_colour = vertex_colour; + fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); + +} diff --git a/examples/simplegame/dngn_blood_fountain.png b/examples/simplegame/dngn_blood_fountain.png deleted file mode 100644 index 7214fd47..00000000 Binary files a/examples/simplegame/dngn_blood_fountain.png and /dev/null differ diff --git a/examples/simplegame/main.cpp b/examples/simplegame/main.cpp index a631e45b..06200661 100644 --- a/examples/simplegame/main.cpp +++ b/examples/simplegame/main.cpp @@ -17,17 +17,19 @@ using namespace yage; int main() { Window window; - GlslProgram program; + GlslProgram textureProgram; window.create("Simple Game", 800, 640); SpriteBatch sp; - program.compileShadersFromFile("examples/simplegame/textureshader.vert", - "examples/simplegame/textureshader.frag"); - program.linkShaders(); + textureProgram.compileShadersFromFile("examples/resources/textureshader.vert", + "examples/resources/textureshader.frag"); + textureProgram.linkShaders(); Texture fountain = ResourceManager::getTexture( - "examples/simplegame/dngn_blood_fountain.png"); + "examples/resources/dngn_blood_fountain.png"); + Texture breast_plate = + ResourceManager::getTexture("examples/resources/breast_black.png"); cout << "texture: " << fountain.width << ", " << fountain.height << '\n'; @@ -35,23 +37,31 @@ int main() while (!window.shouldClose()) { window.clearBuffer(); + Texture texture = fountain; - program.use(); - camera.update(program); + window.pollEvents(); + if (window.keyPressed(yage::key::SPACE)) { + cout << "Pressed A" << '\n'; + } + if (window.keyPressed(yage::key::E)) { + texture = breast_plate; + } + + textureProgram.use(); + camera.update(textureProgram); glActiveTexture(GL_TEXTURE0); - GLint texture_location = program.getUniformLocation("texture_sampler"); + GLint texture_location = textureProgram.getUniformLocation("texture_sampler"); glUniform1i(texture_location, 0); - sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, fountain.id, + sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, texture.id, Colour(255, 0, 255, 255), 0); sp.render(); glBindTexture(GL_TEXTURE_2D, 0); - program.unuse(); + textureProgram.unuse(); window.swapBuffer(); - window.pollEvents(); } } diff --git a/examples/simplegame/textureshader.frag b/examples/simplegame/textureshader.frag deleted file mode 100644 index ef728b04..00000000 --- a/examples/simplegame/textureshader.frag +++ /dev/null @@ -1,16 +0,0 @@ -#version 450 - -layout(location = 0) in vec2 fragment_position; -layout(location = 1) in vec4 fragment_colour; -layout(location = 2) in vec2 fragment_uv; - -out vec4 colour; - -uniform sampler2D texture_sampler; - -void main() -{ - vec4 texture_color = texture(texture_sampler, fragment_uv); - - colour = texture_color * fragment_colour; -} diff --git a/examples/simplegame/textureshader.vert b/examples/simplegame/textureshader.vert deleted file mode 100644 index 3277d8b0..00000000 --- a/examples/simplegame/textureshader.vert +++ /dev/null @@ -1,23 +0,0 @@ -#version 450 - -layout(location = 0) in vec2 vertex_position; -layout(location = 1) in vec4 vertex_colour; -layout(location = 2) in vec2 vertex_uv; - -layout(location = 0) out vec2 fragment_position; -layout(location = 1) out vec4 fragment_colour; -layout(location = 2) out vec2 fragment_uv; - -uniform mat4 P; - -void main() -{ - gl_Position.xy = (P*vec4(vertex_position, 0.0, 1.0)).xy; - gl_Position.z = 0.0; - gl_Position.w = 1.0; - - fragment_position = vertex_position; - fragment_colour = vertex_colour; - fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); - -} -- cgit From 022a4bdd81332ce67d799be6a06afb42ae45ac2e Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Mon, 25 Dec 2017 12:27:32 +0000 Subject: [Build] Added examples and improved build for them. --- examples/CMakeLists.txt | 12 ++++++++++-- examples/shooter/main.cpp | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 examples/shooter/main.cpp (limited to 'examples') diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 16b20795..a75f6528 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,2 +1,10 @@ -add_executable(simplegame simplegame/main.cpp) -target_link_libraries(simplegame yage) +function(make_example name) + + file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${name}/*.cpp) + add_executable(${name} ${SOURCES}) + target_link_libraries(${name} yage) + +endfunction(make_test) + +make_example(simplegame) +make_example(shooter) diff --git a/examples/shooter/main.cpp b/examples/shooter/main.cpp new file mode 100644 index 00000000..d28af83e --- /dev/null +++ b/examples/shooter/main.cpp @@ -0,0 +1,22 @@ +#include + +#include + +using std::cout; + +int main(int argc, char** argv) +{ + cout << "Starting Shooter example...\n"; + + yage::Window window; + window.create("Shooter example", 1920, 1080); + + while(!window.shouldClose()) { + window.pollEvents(); + window.clearBuffer(); + + + + window.swapBuffer(); + } +} -- cgit From f949692714e72a0e2d45ebb6a5d698424ab71dee Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Mon, 25 Dec 2017 13:54:09 +0000 Subject: [Broken] Reorganising and fixing. --- examples/simplegame/main.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'examples') diff --git a/examples/simplegame/main.cpp b/examples/simplegame/main.cpp index 06200661..9fba20eb 100644 --- a/examples/simplegame/main.cpp +++ b/examples/simplegame/main.cpp @@ -22,8 +22,9 @@ int main() window.create("Simple Game", 800, 640); SpriteBatch sp; - textureProgram.compileShadersFromFile("examples/resources/textureshader.vert", - "examples/resources/textureshader.frag"); + textureProgram.compileShadersFromFile( + "examples/resources/textureshader.vert", + "examples/resources/textureshader.frag"); textureProgram.linkShaders(); Texture fountain = ResourceManager::getTexture( @@ -52,7 +53,8 @@ int main() glActiveTexture(GL_TEXTURE0); - GLint texture_location = textureProgram.getUniformLocation("texture_sampler"); + GLint texture_location = + textureProgram.getUniformLocation("texture_sampler"); glUniform1i(texture_location, 0); sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, texture.id, -- cgit From 354d7df4d2779ed7391701d1ef4344e959b64582 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 27 Dec 2017 19:21:12 +0000 Subject: [Broken] Texture is black. --- examples/CMakeLists.txt | 2 +- examples/resources/colourshader.frag | 10 ++++++++ examples/resources/colourshader.vert | 15 ++++++++++++ examples/resources/textureshader.frag | 8 +++--- examples/resources/textureshader.vert | 7 ++---- examples/shooter/main.cpp | 46 ++++++++++++++++++++++++++++++++--- examples/simplegame/main.cpp | 25 ++++++------------- 7 files changed, 82 insertions(+), 31 deletions(-) create mode 100644 examples/resources/colourshader.frag create mode 100644 examples/resources/colourshader.vert (limited to 'examples') diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index a75f6528..156b6a34 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,7 +4,7 @@ function(make_example name) add_executable(${name} ${SOURCES}) target_link_libraries(${name} yage) -endfunction(make_test) +endfunction(make_example) make_example(simplegame) make_example(shooter) diff --git a/examples/resources/colourshader.frag b/examples/resources/colourshader.frag new file mode 100644 index 00000000..e49d1ebb --- /dev/null +++ b/examples/resources/colourshader.frag @@ -0,0 +1,10 @@ +#version 450 + +layout(location = 0) in vec4 fragment_colour; + +layout(location = 0) out vec4 colour; + +void main() +{ + colour = fragment_colour; +} diff --git a/examples/resources/colourshader.vert b/examples/resources/colourshader.vert new file mode 100644 index 00000000..e5c10d77 --- /dev/null +++ b/examples/resources/colourshader.vert @@ -0,0 +1,15 @@ +#version 450 + +layout(location = 0) in vec2 vertex_position; +layout(location = 1) in vec4 vertex_colour; + +layout(location = 0) out vec4 fragment_colour; + +uniform mat4 P; + +void main() +{ + gl_Position = vec4(vertex_position, 0.f, 1.f); + + fragment_colour = vertex_colour; +} diff --git a/examples/resources/textureshader.frag b/examples/resources/textureshader.frag index ef728b04..8d916be6 100644 --- a/examples/resources/textureshader.frag +++ b/examples/resources/textureshader.frag @@ -4,13 +4,15 @@ layout(location = 0) in vec2 fragment_position; layout(location = 1) in vec4 fragment_colour; layout(location = 2) in vec2 fragment_uv; -out vec4 colour; +layout(location = 0) out vec4 colour; +layout(location = 1) out vec4 colour2; uniform sampler2D texture_sampler; void main() { - vec4 texture_color = texture(texture_sampler, fragment_uv); + vec4 texture_colour = texture(texture_sampler, fragment_uv); - colour = texture_color * fragment_colour; + colour2 = vec4(1.f, 0.f, 0.f, 1.f); + colour = texture_colour; } diff --git a/examples/resources/textureshader.vert b/examples/resources/textureshader.vert index 3277d8b0..b0c11a6c 100644 --- a/examples/resources/textureshader.vert +++ b/examples/resources/textureshader.vert @@ -12,12 +12,9 @@ uniform mat4 P; void main() { - gl_Position.xy = (P*vec4(vertex_position, 0.0, 1.0)).xy; - gl_Position.z = 0.0; - gl_Position.w = 1.0; + gl_Position = vec4((P*vec4(vertex_position, 0.f, 1.f)).xy, 0.f, 1.f); fragment_position = vertex_position; fragment_colour = vertex_colour; - fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); - + fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); } diff --git a/examples/shooter/main.cpp b/examples/shooter/main.cpp index d28af83e..fe98f300 100644 --- a/examples/shooter/main.cpp +++ b/examples/shooter/main.cpp @@ -1,22 +1,60 @@ #include +#include "glad/glad.h" + #include using std::cout; -int main(int argc, char** argv) +int main(int argc, char **argv) { cout << "Starting Shooter example...\n"; yage::Window window; - window.create("Shooter example", 1920, 1080); + window.create("Shooter example", 800, 600); + + yage::Shader shader("examples/resources/colourshader.vert", + "examples/resources/colourshader.frag"); + + GLfloat vertices[] = { + 0.0f, 0.5f, 1.f, 0.f, 0.f, // Vertex 1 (X, Y, R, G, B) + 0.5f, -0.5f, 0.f, 1.f, 0.f, // Vertex 2 (X, Y, R, G, B) + -0.5f, -0.5f, 0.f, 0.f, 1.f, // Vertex 3 (X, Y, R, G, B) + }; + + // create vertex array + GLuint rect_vao, rect_vbo; + + // bind vertex array object + glGenVertexArrays(1, &rect_vao); + glBindVertexArray(rect_vao); + + // bind vertex buffer object + glGenBuffers(1, &rect_vbo); + glBindBuffer(GL_ARRAY_BUFFER, rect_vbo); - while(!window.shouldClose()) { + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + shader.use(); + + // enable vertex attribute arrays + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + + // set the vertex attribute pointers + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), 0); + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), + (void *)(2 * sizeof(GLfloat))); + + while (!window.shouldClose()) { window.pollEvents(); window.clearBuffer(); - + glDrawArrays(GL_TRIANGLES, 0, 3); window.swapBuffer(); } + + glDeleteBuffers(1, &rect_vbo); + + glDeleteVertexArrays(1, &rect_vao); } diff --git a/examples/simplegame/main.cpp b/examples/simplegame/main.cpp index 9fba20eb..f5547e53 100644 --- a/examples/simplegame/main.cpp +++ b/examples/simplegame/main.cpp @@ -17,15 +17,11 @@ using namespace yage; int main() { Window window; - GlslProgram textureProgram; - window.create("Simple Game", 800, 640); - SpriteBatch sp; - textureProgram.compileShadersFromFile( - "examples/resources/textureshader.vert", - "examples/resources/textureshader.frag"); - textureProgram.linkShaders(); + Shader textureProgram("examples/resources/textureshader.vert", + "examples/resources/textureshader.frag"); + SpriteBatch sp; Texture fountain = ResourceManager::getTexture( "examples/resources/dngn_blood_fountain.png"); @@ -36,6 +32,9 @@ int main() Camera camera(800, 640); + textureProgram.use(); + textureProgram.setUniform("texture_sampler", 0); + while (!window.shouldClose()) { window.clearBuffer(); Texture texture = fountain; @@ -48,22 +47,12 @@ int main() texture = breast_plate; } - textureProgram.use(); camera.update(textureProgram); - glActiveTexture(GL_TEXTURE0); - - GLint texture_location = - textureProgram.getUniformLocation("texture_sampler"); - glUniform1i(texture_location, 0); - - sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, texture.id, + sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, fountain.id, Colour(255, 0, 255, 255), 0); sp.render(); - glBindTexture(GL_TEXTURE_2D, 0); - textureProgram.unuse(); - window.swapBuffer(); } } -- cgit From d2ed94a517066da4f4ec53045f9c69bfc355eab6 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 27 Dec 2017 21:24:48 +0000 Subject: [Code] Examples working again. --- examples/resources/learnopenglshader.frag | 12 ++++++++++++ examples/resources/learnopenglshader.vert | 14 ++++++++++++++ examples/resources/wall.jpg | Bin 0 -> 256989 bytes examples/resources/wall.png | Bin 0 -> 607366 bytes examples/simplegame/main.cpp | 15 +++++++-------- 5 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 examples/resources/learnopenglshader.frag create mode 100644 examples/resources/learnopenglshader.vert create mode 100644 examples/resources/wall.jpg create mode 100644 examples/resources/wall.png (limited to 'examples') diff --git a/examples/resources/learnopenglshader.frag b/examples/resources/learnopenglshader.frag new file mode 100644 index 00000000..ae3ba3ce --- /dev/null +++ b/examples/resources/learnopenglshader.frag @@ -0,0 +1,12 @@ +#version 450 core +out vec4 FragColor; + +in vec4 ourColor; +in vec2 TexCoord; + +uniform sampler2D ourTexture; + +void main() +{ + FragColor = texture(ourTexture, TexCoord); +} diff --git a/examples/resources/learnopenglshader.vert b/examples/resources/learnopenglshader.vert new file mode 100644 index 00000000..7b24b5d7 --- /dev/null +++ b/examples/resources/learnopenglshader.vert @@ -0,0 +1,14 @@ +#version 450 core +layout (location = 0) in vec2 aPos; +layout (location = 1) in vec4 aColor; +layout (location = 2) in vec2 aTexCoord; + +out vec4 ourColor; +out vec2 TexCoord; + +void main() +{ + gl_Position = vec4(aPos, 0.0, 1.0); + ourColor = aColor; + TexCoord = aTexCoord; +} diff --git a/examples/resources/wall.jpg b/examples/resources/wall.jpg new file mode 100644 index 00000000..49631987 Binary files /dev/null and b/examples/resources/wall.jpg differ diff --git a/examples/resources/wall.png b/examples/resources/wall.png new file mode 100644 index 00000000..3eb2cd6e Binary files /dev/null and b/examples/resources/wall.png differ diff --git a/examples/simplegame/main.cpp b/examples/simplegame/main.cpp index f5547e53..895fce51 100644 --- a/examples/simplegame/main.cpp +++ b/examples/simplegame/main.cpp @@ -19,8 +19,8 @@ int main() Window window; window.create("Simple Game", 800, 640); - Shader textureProgram("examples/resources/textureshader.vert", - "examples/resources/textureshader.frag"); + Shader textureProgram("examples/resources/learnopenglshader.vert", + "examples/resources/learnopenglshader.frag"); SpriteBatch sp; Texture fountain = ResourceManager::getTexture( @@ -28,12 +28,13 @@ int main() Texture breast_plate = ResourceManager::getTexture("examples/resources/breast_black.png"); - cout << "texture: " << fountain.width << ", " << fountain.height << '\n'; + Texture brick = ResourceManager::getTexture("examples/resources/wall.png"); - Camera camera(800, 640); + cout << "texture: " << brick.width << ", " << brick.height << '\n'; + Camera camera(800, 640); textureProgram.use(); - textureProgram.setUniform("texture_sampler", 0); + textureProgram.setUniform("ourTexture", 0); while (!window.shouldClose()) { window.clearBuffer(); @@ -47,10 +48,8 @@ int main() texture = breast_plate; } - camera.update(textureProgram); + sp.draw({-0.5, -0.5, 1, 1}, {0, 0, 1, 1}, brick.id, Colour(255, 255, 255, 255), 0); - sp.draw({0.f, 0.f, 64.f, 64.f}, {0, 0, 1, 1}, fountain.id, - Colour(255, 0, 255, 255), 0); sp.render(); window.swapBuffer(); -- cgit From 5c1a57b3672ec1e0777d8d0878c6a7ae93ebfdca Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 30 Dec 2017 16:07:41 +0000 Subject: [Code] Fixed spritebatch and optimised it. --- examples/shooter/main.cpp | 43 ++----------------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) (limited to 'examples') diff --git a/examples/shooter/main.cpp b/examples/shooter/main.cpp index fe98f300..12cf218d 100644 --- a/examples/shooter/main.cpp +++ b/examples/shooter/main.cpp @@ -2,59 +2,20 @@ #include "glad/glad.h" -#include - using std::cout; int main(int argc, char **argv) { - cout << "Starting Shooter example...\n"; - yage::Window window; window.create("Shooter example", 800, 600); - yage::Shader shader("examples/resources/colourshader.vert", - "examples/resources/colourshader.frag"); - - GLfloat vertices[] = { - 0.0f, 0.5f, 1.f, 0.f, 0.f, // Vertex 1 (X, Y, R, G, B) - 0.5f, -0.5f, 0.f, 1.f, 0.f, // Vertex 2 (X, Y, R, G, B) - -0.5f, -0.5f, 0.f, 0.f, 1.f, // Vertex 3 (X, Y, R, G, B) - }; - - // create vertex array - GLuint rect_vao, rect_vbo; - - // bind vertex array object - glGenVertexArrays(1, &rect_vao); - glBindVertexArray(rect_vao); - - // bind vertex buffer object - glGenBuffers(1, &rect_vbo); - glBindBuffer(GL_ARRAY_BUFFER, rect_vbo); - - glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - shader.use(); - - // enable vertex attribute arrays - glEnableVertexAttribArray(0); - glEnableVertexAttribArray(1); - - // set the vertex attribute pointers - glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), 0); - glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), - (void *)(2 * sizeof(GLfloat))); + yage::Shader shader("examples/resources/textureshader.vert", + "examples/resources/textureshader.frag"); while (!window.shouldClose()) { window.pollEvents(); window.clearBuffer(); - glDrawArrays(GL_TRIANGLES, 0, 3); - window.swapBuffer(); } - - glDeleteBuffers(1, &rect_vbo); - - glDeleteVertexArrays(1, &rect_vao); } -- cgit From 34908f108ad7c2ee6cff96491a0bc40381477424 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sun, 31 Dec 2017 18:00:01 +0000 Subject: [Test] Benchmarking the engine and trying to optimize. --- examples/resources/fighter_fd.png | Bin 0 -> 6467 bytes examples/resources/fighter_fl.png | Bin 0 -> 2916 bytes examples/resources/fighter_md.png | Bin 0 -> 6464 bytes examples/resources/fighter_ml.png | Bin 0 -> 2843 bytes examples/resources/healer_fd.png | Bin 0 -> 7862 bytes examples/resources/healer_fl.png | Bin 0 -> 3256 bytes examples/resources/healer_md.png | Bin 0 -> 6756 bytes examples/resources/healer_ml.png | Bin 0 -> 2940 bytes examples/resources/mage_fd.png | Bin 0 -> 7026 bytes examples/resources/mage_fl.png | Bin 0 -> 3283 bytes examples/resources/mage_md.png | Bin 0 -> 6794 bytes examples/resources/mage_ml.png | Bin 0 -> 3139 bytes examples/resources/ranger_fd.png | Bin 0 -> 6798 bytes examples/resources/ranger_fl.png | Bin 0 -> 2884 bytes examples/resources/ranger_md.png | Bin 0 -> 6182 bytes examples/resources/ranger_ml.png | Bin 0 -> 2803 bytes examples/resources/textureshader.frag | 12 ++-- examples/resources/textureshader.vert | 8 +-- examples/shooter/main.cpp | 108 +++++++++++++++++++++++++++++++++- examples/shooter/player.cpp | 62 +++++++++++++++++++ examples/shooter/player.h | 37 ++++++++++++ examples/simplegame/main.cpp | 41 ++++++++++--- 22 files changed, 249 insertions(+), 19 deletions(-) create mode 100644 examples/resources/fighter_fd.png create mode 100644 examples/resources/fighter_fl.png create mode 100644 examples/resources/fighter_md.png create mode 100644 examples/resources/fighter_ml.png create mode 100644 examples/resources/healer_fd.png create mode 100644 examples/resources/healer_fl.png create mode 100644 examples/resources/healer_md.png create mode 100644 examples/resources/healer_ml.png create mode 100644 examples/resources/mage_fd.png create mode 100644 examples/resources/mage_fl.png create mode 100644 examples/resources/mage_md.png create mode 100644 examples/resources/mage_ml.png create mode 100644 examples/resources/ranger_fd.png create mode 100644 examples/resources/ranger_fl.png create mode 100644 examples/resources/ranger_md.png create mode 100644 examples/resources/ranger_ml.png create mode 100644 examples/shooter/player.cpp create mode 100644 examples/shooter/player.h (limited to 'examples') diff --git a/examples/resources/fighter_fd.png b/examples/resources/fighter_fd.png new file mode 100644 index 00000000..ea576b4d Binary files /dev/null and b/examples/resources/fighter_fd.png differ diff --git a/examples/resources/fighter_fl.png b/examples/resources/fighter_fl.png new file mode 100644 index 00000000..69b677ca Binary files /dev/null and b/examples/resources/fighter_fl.png differ diff --git a/examples/resources/fighter_md.png b/examples/resources/fighter_md.png new file mode 100644 index 00000000..1b333abb Binary files /dev/null and b/examples/resources/fighter_md.png differ diff --git a/examples/resources/fighter_ml.png b/examples/resources/fighter_ml.png new file mode 100644 index 00000000..74dca840 Binary files /dev/null and b/examples/resources/fighter_ml.png differ diff --git a/examples/resources/healer_fd.png b/examples/resources/healer_fd.png new file mode 100644 index 00000000..138e7c48 Binary files /dev/null and b/examples/resources/healer_fd.png differ diff --git a/examples/resources/healer_fl.png b/examples/resources/healer_fl.png new file mode 100644 index 00000000..8360cfb9 Binary files /dev/null and b/examples/resources/healer_fl.png differ diff --git a/examples/resources/healer_md.png b/examples/resources/healer_md.png new file mode 100644 index 00000000..20ce4d2f Binary files /dev/null and b/examples/resources/healer_md.png differ diff --git a/examples/resources/healer_ml.png b/examples/resources/healer_ml.png new file mode 100644 index 00000000..28377d6b Binary files /dev/null and b/examples/resources/healer_ml.png differ diff --git a/examples/resources/mage_fd.png b/examples/resources/mage_fd.png new file mode 100644 index 00000000..b6a692f7 Binary files /dev/null and b/examples/resources/mage_fd.png differ diff --git a/examples/resources/mage_fl.png b/examples/resources/mage_fl.png new file mode 100644 index 00000000..66f5d2e5 Binary files /dev/null and b/examples/resources/mage_fl.png differ diff --git a/examples/resources/mage_md.png b/examples/resources/mage_md.png new file mode 100644 index 00000000..40838087 Binary files /dev/null and b/examples/resources/mage_md.png differ diff --git a/examples/resources/mage_ml.png b/examples/resources/mage_ml.png new file mode 100644 index 00000000..d559fb56 Binary files /dev/null and b/examples/resources/mage_ml.png differ diff --git a/examples/resources/ranger_fd.png b/examples/resources/ranger_fd.png new file mode 100644 index 00000000..e574cb1f Binary files /dev/null and b/examples/resources/ranger_fd.png differ diff --git a/examples/resources/ranger_fl.png b/examples/resources/ranger_fl.png new file mode 100644 index 00000000..9bc31719 Binary files /dev/null and b/examples/resources/ranger_fl.png differ diff --git a/examples/resources/ranger_md.png b/examples/resources/ranger_md.png new file mode 100644 index 00000000..5803cbe6 Binary files /dev/null and b/examples/resources/ranger_md.png differ diff --git a/examples/resources/ranger_ml.png b/examples/resources/ranger_ml.png new file mode 100644 index 00000000..e2e528b4 Binary files /dev/null and b/examples/resources/ranger_ml.png differ diff --git a/examples/resources/textureshader.frag b/examples/resources/textureshader.frag index 8d916be6..1292de96 100644 --- a/examples/resources/textureshader.frag +++ b/examples/resources/textureshader.frag @@ -1,11 +1,10 @@ -#version 450 +#version 330 -layout(location = 0) in vec2 fragment_position; -layout(location = 1) in vec4 fragment_colour; -layout(location = 2) in vec2 fragment_uv; +in vec2 fragment_position; +in vec4 fragment_colour; +in vec2 fragment_uv; -layout(location = 0) out vec4 colour; -layout(location = 1) out vec4 colour2; +out vec4 colour; uniform sampler2D texture_sampler; @@ -13,6 +12,5 @@ void main() { vec4 texture_colour = texture(texture_sampler, fragment_uv); - colour2 = vec4(1.f, 0.f, 0.f, 1.f); colour = texture_colour; } diff --git a/examples/resources/textureshader.vert b/examples/resources/textureshader.vert index b0c11a6c..aac246c9 100644 --- a/examples/resources/textureshader.vert +++ b/examples/resources/textureshader.vert @@ -1,12 +1,12 @@ -#version 450 +#version 330 layout(location = 0) in vec2 vertex_position; layout(location = 1) in vec4 vertex_colour; layout(location = 2) in vec2 vertex_uv; -layout(location = 0) out vec2 fragment_position; -layout(location = 1) out vec4 fragment_colour; -layout(location = 2) out vec2 fragment_uv; +out vec2 fragment_position; +out vec4 fragment_colour; +out vec2 fragment_uv; uniform mat4 P; diff --git a/examples/shooter/main.cpp b/examples/shooter/main.cpp index 12cf218d..d2727877 100644 --- a/examples/shooter/main.cpp +++ b/examples/shooter/main.cpp @@ -1,6 +1,6 @@ #include -#include "glad/glad.h" +#include "player.h" using std::cout; @@ -12,9 +12,115 @@ int main(int argc, char **argv) yage::Shader shader("examples/resources/textureshader.vert", "examples/resources/textureshader.frag"); + std::vector male_l = { + yage::ResourceManager::getTexture("examples/resources/fighter_ml.png", + 3, 4), + yage::ResourceManager::getTexture("examples/resources/ranger_ml.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/mage_ml.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/healer_ml.png", 3, + 4)}; + std::vector female_l = { + yage::ResourceManager::getTexture("examples/resources/fighter_fl.png", + 3, 4), + yage::ResourceManager::getTexture("examples/resources/ranger_fl.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/mage_fl.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/healer_fl.png", 3, + 4)}; + std::vector male_d = { + yage::ResourceManager::getTexture("examples/resources/fighter_md.png", + 3, 4), + yage::ResourceManager::getTexture("examples/resources/ranger_md.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/mage_md.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/healer_md.png", 3, + 4)}; + std::vector female_d = { + yage::ResourceManager::getTexture("examples/resources/fighter_fd.png", + 3, 4), + yage::ResourceManager::getTexture("examples/resources/ranger_fd.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/mage_fd.png", 3, + 4), + yage::ResourceManager::getTexture("examples/resources/healer_fd.png", 3, + 4)}; + + yage::SpriteBatch sp; + yage::Camera camera(800, 600); + + int i = 0; + int j = 0; + bool space_pressed = false; + bool c_pressed = false; + + shader.use(); + shader.setUniform("texture_sampler", 0); + + auto textures = male_l; + + Player player({400, 300, 48 * 2, 64 * 2}, textures.front()); + while (!window.shouldClose()) { window.pollEvents(); + + if (window.keyPressed(yage::key::D)) { + player.move(Direction::RIGHT); + } + if (window.keyPressed(yage::key::S)) { + player.move(Direction::DOWN); + } + if (window.keyPressed(yage::key::A)) { + player.move(Direction::LEFT); + } + if (window.keyPressed(yage::key::W)) { + player.move(Direction::UP); + } + if (!window.keyPressed(yage::key::D) && + !window.keyPressed(yage::key::S) && + !window.keyPressed(yage::key::A) && + !window.keyPressed(yage::key::W)) { + player.idle(); + } + if (window.keyPressed(yage::key::SPACE) && !space_pressed) { + space_pressed = true; + i = (i + 1) % textures.size(); + } + if (!window.keyPressed(yage::key::SPACE)) { + space_pressed = false; + } + if (window.keyPressed(yage::key::C) && !c_pressed) { + c_pressed = true; + j = (j + 1) % 4; + switch (j) { + case 0: + textures = male_l; + break; + case 1: + textures = male_d; + break; + case 2: + textures = female_l; + break; + case 3: + textures = female_d; + break; + } + } + if (!window.keyPressed(yage::key::C)) { + c_pressed = false; + } + + player.setTexture(textures[i]); + + camera.update(shader); + window.clearBuffer(); + player.draw(sp); + sp.render(); window.swapBuffer(); } diff --git a/examples/shooter/player.cpp b/examples/shooter/player.cpp new file mode 100644 index 00000000..2d0148e6 --- /dev/null +++ b/examples/shooter/player.cpp @@ -0,0 +1,62 @@ +#include "player.h" + +Player::Player(const glm::vec4 &bound, const yage::Texture &texture) + : bound_(bound), texture_(texture), direction_(Direction::DOWN), + action_(Action::IDLE), speed_(4) +{ +} + +void Player::setTexture(const yage::Texture &texture) { + texture_ = texture; +} + +void Player::draw(yage::SpriteBatch &sp) const +{ + static int time = 0; + static int iteration = 0; + float width = 1.f / static_cast(texture_.x); + float height = 1.f / static_cast(texture_.y); + + switch (action_) { + case Action::IDLE: + sp.draw(bound_, + {width, static_cast(direction_) * height, width, height}, + texture_.id, yage::Colour(255, 255, 255, 255), 0); + break; + case Action::MOVING: + if(time % 15 == 0) { + iteration = (iteration + 1) % 2; + } + sp.draw(bound_, + {iteration * 2 * width, static_cast(direction_) * height, width, height}, + texture_.id, yage::Colour(255, 255, 255, 255), 0); + time = (time + 1) % 59; + break; + } +} + +void Player::move(Direction direction) +{ + direction_ = direction; + action_ = Action::MOVING; + + switch (direction_) { + case Direction::LEFT: + bound_.x -= speed_; + break; + case Direction::DOWN: + bound_.y -= speed_; + break; + case Direction::RIGHT: + bound_.x += speed_; + break; + case Direction::UP: + bound_.y += speed_; + break; + } +} + +void Player::idle() +{ + action_ = Action::IDLE; +} diff --git a/examples/shooter/player.h b/examples/shooter/player.h new file mode 100644 index 00000000..72af7c34 --- /dev/null +++ b/examples/shooter/player.h @@ -0,0 +1,37 @@ +#ifndef EXAMPLE_SHOOTER_PLAYER_H +#define EXAMPLE_SHOOTER_PLAYER_H + +#include "yage/yage.h" + +enum class Direction { + LEFT, + DOWN, + RIGHT, + UP, +}; + +enum class Action { + IDLE, + MOVING, +}; + +class Player +{ +public: + Player(const glm::vec4 &bound, const yage::Texture &texture); + + void setTexture(const yage::Texture &texture); + + void draw(yage::SpriteBatch &sp) const; + + void move(Direction direction); + void idle(); +private: + glm::vec4 bound_; + yage::Texture texture_; + Direction direction_; + Action action_; + int speed_; +}; + +#endif diff --git a/examples/simplegame/main.cpp b/examples/simplegame/main.cpp index 895fce51..03c85123 100644 --- a/examples/simplegame/main.cpp +++ b/examples/simplegame/main.cpp @@ -17,10 +17,10 @@ using namespace yage; int main() { Window window; - window.create("Simple Game", 800, 640); + window.create("Simple Game", 1920, 1080); - Shader textureProgram("examples/resources/learnopenglshader.vert", - "examples/resources/learnopenglshader.frag"); + Shader textureProgram("examples/resources/textureshader.vert", + "examples/resources/textureshader.frag"); SpriteBatch sp; Texture fountain = ResourceManager::getTexture( @@ -32,9 +32,16 @@ int main() cout << "texture: " << brick.width << ", " << brick.height << '\n'; - Camera camera(800, 640); + Camera camera(1920, 1080); textureProgram.use(); - textureProgram.setUniform("ourTexture", 0); + textureProgram.setUniform("texture_sampler", 0); + + double prev_time = glfwGetTime(); + double final_time = 0; + double diff = 0; + double fps = 0; + int i = 0; + double time; while (!window.shouldClose()) { window.clearBuffer(); @@ -48,10 +55,30 @@ int main() texture = breast_plate; } - sp.draw({-0.5, -0.5, 1, 1}, {0, 0, 1, 1}, brick.id, Colour(255, 255, 255, 255), 0); + camera.update(textureProgram); - sp.render(); + time = glfwGetTime(); + for (int i = 0; i < 1920/10; i++) { + for(int j = 0; j < 1080/10; j++) + sp.draw({(float)(10*i), (float)(10*j), 10.f, 10.f}, {0.f, 0.f, 1.f, 1.f}, fountain.id, + Colour(255, 255, 255, 255), 0); + } + + sp.draw({50, 50, 100, 100}, {0, 0, 1, 1}, brick.id, Colour(255, 255, 255, 255), 1); + yLog << "draw: " << glfwGetTime() - time; + time = glfwGetTime(); + sp.render(); + yLog << "render: " << glfwGetTime() - time; window.swapBuffer(); + + if (i == 0) { + final_time = glfwGetTime(); + diff = final_time - prev_time; + prev_time = final_time; + fps = 1 / diff * 30; + yLog << "fps: " << fps; + } + i = (i + 1) % 30; } } -- cgit From 9038ee45f93b1ae07a28a516781676ebe3a67536 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sun, 31 Dec 2017 18:17:04 +0000 Subject: [Bug] Fixed null pointers in spritebatch. --- examples/simplegame/main.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'examples') diff --git a/examples/simplegame/main.cpp b/examples/simplegame/main.cpp index 03c85123..bd5a05b9 100644 --- a/examples/simplegame/main.cpp +++ b/examples/simplegame/main.cpp @@ -57,10 +57,11 @@ int main() camera.update(textureProgram); + int amount = 5; time = glfwGetTime(); - for (int i = 0; i < 1920/10; i++) { - for(int j = 0; j < 1080/10; j++) - sp.draw({(float)(10*i), (float)(10*j), 10.f, 10.f}, {0.f, 0.f, 1.f, 1.f}, fountain.id, + for (int i = 0; i < 1920/amount; i++) { + for(int j = 0; j < 1080/amount; j++) + sp.draw({(float)(amount*i), (float)(amount*j), (float)amount, (float)amount}, {0.f, 0.f, 1.f, 1.f}, fountain.id, Colour(255, 255, 255, 255), 0); } -- cgit From 86e4aa6265ade205aba94494a7a31a83b5686387 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 3 Jan 2018 13:26:37 +0000 Subject: [Engine] [Example] Reenabled vsync and working on example. --- examples/resources/bullet.png | Bin 0 -> 1383 bytes examples/shooter/bullet.cpp | 8 ++++++++ examples/shooter/bullet.h | 15 +++++++++++++++ examples/shooter/main.cpp | 3 +++ 4 files changed, 26 insertions(+) create mode 100644 examples/resources/bullet.png create mode 100644 examples/shooter/bullet.cpp create mode 100644 examples/shooter/bullet.h (limited to 'examples') diff --git a/examples/resources/bullet.png b/examples/resources/bullet.png new file mode 100644 index 00000000..89e6289b Binary files /dev/null and b/examples/resources/bullet.png differ diff --git a/examples/shooter/bullet.cpp b/examples/shooter/bullet.cpp new file mode 100644 index 00000000..55ce3f6e --- /dev/null +++ b/examples/shooter/bullet.cpp @@ -0,0 +1,8 @@ +#include "bullet.h" + +Bullet::Bullet(const glm::vec4 &bound) : bound_(bound) {} + +void Bullet::draw(yage::SpriteBatch &sp) const +{ + sp.draw(bound_, {0, 0, 1, 1}, yage::ResourceManager::getTexture("examples/resources/bullet.png").id, yage::Colour(255, 255, 255, 255), 0); +} diff --git a/examples/shooter/bullet.h b/examples/shooter/bullet.h new file mode 100644 index 00000000..37ea52ca --- /dev/null +++ b/examples/shooter/bullet.h @@ -0,0 +1,15 @@ +#ifndef EXAMPLES_SHOOTER_BULLET_H +#define EXAMPLES_SHOOTER_BULLET_H + +#include + +class Bullet { +public: + Bullet(const glm::vec4 &bound); + + void draw(yage::SpriteBatch &sp) const; +private: + glm::vec4 bound_; +}; + +#endif diff --git a/examples/shooter/main.cpp b/examples/shooter/main.cpp index d2727877..9a8d22d0 100644 --- a/examples/shooter/main.cpp +++ b/examples/shooter/main.cpp @@ -1,6 +1,7 @@ #include #include "player.h" +#include "bullet.h" using std::cout; @@ -63,6 +64,7 @@ int main(int argc, char **argv) auto textures = male_l; Player player({400, 300, 48 * 2, 64 * 2}, textures.front()); + Bullet bullet({400, 300, 25, 25}); while (!window.shouldClose()) { window.pollEvents(); @@ -120,6 +122,7 @@ int main(int argc, char **argv) window.clearBuffer(); player.draw(sp); + bullet.draw(sp); sp.render(); window.swapBuffer(); -- cgit From a47649786fb94684c415b230669fbf5343cb7c5d Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 3 Jan 2018 13:57:51 +0000 Subject: [Engine] [Example] Added simple bullets that don't move --- examples/shooter/bullet.h | 4 +++- examples/shooter/main.cpp | 23 ++++++++++++++++++++--- examples/shooter/player.cpp | 5 +++++ examples/shooter/player.h | 5 ++++- 4 files changed, 32 insertions(+), 5 deletions(-) (limited to 'examples') diff --git a/examples/shooter/bullet.h b/examples/shooter/bullet.h index 37ea52ca..1d372af1 100644 --- a/examples/shooter/bullet.h +++ b/examples/shooter/bullet.h @@ -3,11 +3,13 @@ #include -class Bullet { +class Bullet : public yage::Drawable +{ public: Bullet(const glm::vec4 &bound); void draw(yage::SpriteBatch &sp) const; + private: glm::vec4 bound_; }; diff --git a/examples/shooter/main.cpp b/examples/shooter/main.cpp index 9a8d22d0..c63c0cab 100644 --- a/examples/shooter/main.cpp +++ b/examples/shooter/main.cpp @@ -1,7 +1,10 @@ #include -#include "player.h" #include "bullet.h" +#include "player.h" + +#include +#include using std::cout; @@ -10,6 +13,8 @@ int main(int argc, char **argv) yage::Window window; window.create("Shooter example", 800, 600); + std::vector> objects; + yage::Shader shader("examples/resources/textureshader.vert", "examples/resources/textureshader.frag"); @@ -64,7 +69,7 @@ int main(int argc, char **argv) auto textures = male_l; Player player({400, 300, 48 * 2, 64 * 2}, textures.front()); - Bullet bullet({400, 300, 25, 25}); + objects.push_back(std::make_unique(glm::vec4(400, 300, 25, 25))); while (!window.shouldClose()) { window.pollEvents(); @@ -116,13 +121,25 @@ int main(int argc, char **argv) c_pressed = false; } + if (window.keyPressed(yage::key::RIGHT)) { + objects.push_back(std::make_unique(glm::vec4(player.position().x, player.position().y, 25, 25))); + } else if (window.keyPressed(yage::key::DOWN)) { + + } else if (window.keyPressed(yage::key::LEFT)) { + } else if (window.keyPressed(yage::key::UP)) { + } + player.setTexture(textures[i]); camera.update(shader); window.clearBuffer(); player.draw(sp); - bullet.draw(sp); + + for(auto &&object : objects) { + object->draw(sp); + } + sp.render(); window.swapBuffer(); diff --git a/examples/shooter/player.cpp b/examples/shooter/player.cpp index 2d0148e6..b2b85cfd 100644 --- a/examples/shooter/player.cpp +++ b/examples/shooter/player.cpp @@ -60,3 +60,8 @@ void Player::idle() { action_ = Action::IDLE; } + +glm::vec4 Player::position() const +{ + return bound_; +} diff --git a/examples/shooter/player.h b/examples/shooter/player.h index 72af7c34..b8042e71 100644 --- a/examples/shooter/player.h +++ b/examples/shooter/player.h @@ -15,7 +15,7 @@ enum class Action { MOVING, }; -class Player +class Player : public yage::Drawable { public: Player(const glm::vec4 &bound, const yage::Texture &texture); @@ -26,6 +26,9 @@ public: void move(Direction direction); void idle(); + + // simple getters + glm::vec4 position() const; private: glm::vec4 bound_; yage::Texture texture_; -- cgit From 7b95e3a9eacf296f215c73e5d8ad9090a24adb20 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Thu, 4 Jan 2018 21:36:30 +0000 Subject: [Engine] Now using stb_image to laod all kinds of textures. --- examples/resources/container.jpg | Bin 0 -> 184939 bytes examples/shooter/bullet.cpp | 31 ++++++++++++++++++++++++++++--- examples/shooter/bullet.h | 11 +++++++++-- examples/shooter/direction.h | 11 +++++++++++ examples/shooter/main.cpp | 36 +++++++++++++++++++++++++++++------- examples/shooter/player.cpp | 11 ++++++++--- examples/shooter/player.h | 12 ++++-------- 7 files changed, 89 insertions(+), 23 deletions(-) create mode 100644 examples/resources/container.jpg create mode 100644 examples/shooter/direction.h (limited to 'examples') diff --git a/examples/resources/container.jpg b/examples/resources/container.jpg new file mode 100644 index 00000000..d07bee4e Binary files /dev/null and b/examples/resources/container.jpg differ diff --git a/examples/shooter/bullet.cpp b/examples/shooter/bullet.cpp index 55ce3f6e..c589b4db 100644 --- a/examples/shooter/bullet.cpp +++ b/examples/shooter/bullet.cpp @@ -1,8 +1,33 @@ #include "bullet.h" -Bullet::Bullet(const glm::vec4 &bound) : bound_(bound) {} +Bullet::Bullet(const glm::vec4 &bound, Direction dir, float speed, float depth) + : bound_(bound), dir_(dir), speed_(speed), depth_(depth) +{ +} + +void Bullet::draw(yage::SpriteBatch &sp) +{ + switch(dir_) { + case Direction::UP: + bound_.y += speed_; + break; + case Direction::DOWN: + bound_.y -= speed_; + break; + case Direction::LEFT: + bound_.x -= speed_; + break; + case Direction::RIGHT: + bound_.x += speed_; + break; + } + sp.draw( + bound_, {0, 0, 1, 1}, + yage::ResourceManager::getTexture("examples/resources/bullet.png").id, + yage::Colour(255, 255, 255, 255), depth_); +} -void Bullet::draw(yage::SpriteBatch &sp) const +glm::vec4 Bullet::position() const { - sp.draw(bound_, {0, 0, 1, 1}, yage::ResourceManager::getTexture("examples/resources/bullet.png").id, yage::Colour(255, 255, 255, 255), 0); + return bound_; } diff --git a/examples/shooter/bullet.h b/examples/shooter/bullet.h index 1d372af1..19430fda 100644 --- a/examples/shooter/bullet.h +++ b/examples/shooter/bullet.h @@ -3,15 +3,22 @@ #include +#include "direction.h" + class Bullet : public yage::Drawable { public: - Bullet(const glm::vec4 &bound); + Bullet(const glm::vec4 &bound, Direction dir, float speed, float depth = 0.f); - void draw(yage::SpriteBatch &sp) const; + void draw(yage::SpriteBatch &sp); + // getters + glm::vec4 position() const; private: glm::vec4 bound_; + Direction dir_; + float speed_; + float depth_; }; #endif diff --git a/examples/shooter/direction.h b/examples/shooter/direction.h new file mode 100644 index 00000000..010c6b54 --- /dev/null +++ b/examples/shooter/direction.h @@ -0,0 +1,11 @@ +#ifndef EXAMPLES_SHOOTER_DIRECTION_H +#define EXAMPLES_SHOOTER_DIRECTION_H + +enum class Direction { + LEFT, + DOWN, + RIGHT, + UP, +}; + +#endif diff --git a/examples/shooter/main.cpp b/examples/shooter/main.cpp index c63c0cab..e38bf53b 100644 --- a/examples/shooter/main.cpp +++ b/examples/shooter/main.cpp @@ -1,10 +1,11 @@ #include #include "bullet.h" +#include "direction.h" #include "player.h" -#include #include +#include using std::cout; @@ -13,7 +14,7 @@ int main(int argc, char **argv) yage::Window window; window.create("Shooter example", 800, 600); - std::vector> objects; + std::vector> bullets; yage::Shader shader("examples/resources/textureshader.vert", "examples/resources/textureshader.frag"); @@ -69,7 +70,6 @@ int main(int argc, char **argv) auto textures = male_l; Player player({400, 300, 48 * 2, 64 * 2}, textures.front()); - objects.push_back(std::make_unique(glm::vec4(400, 300, 25, 25))); while (!window.shouldClose()) { window.pollEvents(); @@ -122,11 +122,33 @@ int main(int argc, char **argv) } if (window.keyPressed(yage::key::RIGHT)) { - objects.push_back(std::make_unique(glm::vec4(player.position().x, player.position().y, 25, 25))); + bullets.push_back(std::make_unique( + glm::vec4(player.position().x + player.position().z / 2.f, + player.position().y + player.position().w / 2.f, 25, + 25), + Direction::RIGHT, 10.f)); + player.look(Direction::RIGHT); } else if (window.keyPressed(yage::key::DOWN)) { - + bullets.push_back(std::make_unique( + glm::vec4(player.position().x + player.position().z / 2.f, + player.position().y + player.position().w / 2.f, 25, + 25), + Direction::DOWN, 10.f, 2)); + player.look(Direction::DOWN); } else if (window.keyPressed(yage::key::LEFT)) { + bullets.push_back(std::make_unique( + glm::vec4(player.position().x + player.position().z / 2.f, + player.position().y + player.position().w / 2.f, 25, + 25), + Direction::LEFT, 10.f, 2)); + player.look(Direction::LEFT); } else if (window.keyPressed(yage::key::UP)) { + bullets.push_back(std::make_unique( + glm::vec4(player.position().x + player.position().z / 2.f, + player.position().y + player.position().w / 2.f, 25, + 25), + Direction::UP, 10.f)); + player.look(Direction::UP); } player.setTexture(textures[i]); @@ -136,8 +158,8 @@ int main(int argc, char **argv) window.clearBuffer(); player.draw(sp); - for(auto &&object : objects) { - object->draw(sp); + for (auto &&bullet : bullets) { + bullet->draw(sp); } sp.render(); diff --git a/examples/shooter/player.cpp b/examples/shooter/player.cpp index b2b85cfd..dab743a9 100644 --- a/examples/shooter/player.cpp +++ b/examples/shooter/player.cpp @@ -10,7 +10,7 @@ void Player::setTexture(const yage::Texture &texture) { texture_ = texture; } -void Player::draw(yage::SpriteBatch &sp) const +void Player::draw(yage::SpriteBatch &sp) { static int time = 0; static int iteration = 0; @@ -21,7 +21,7 @@ void Player::draw(yage::SpriteBatch &sp) const case Action::IDLE: sp.draw(bound_, {width, static_cast(direction_) * height, width, height}, - texture_.id, yage::Colour(255, 255, 255, 255), 0); + texture_.id, yage::Colour(255, 255, 255, 255), 1); break; case Action::MOVING: if(time % 15 == 0) { @@ -29,7 +29,7 @@ void Player::draw(yage::SpriteBatch &sp) const } sp.draw(bound_, {iteration * 2 * width, static_cast(direction_) * height, width, height}, - texture_.id, yage::Colour(255, 255, 255, 255), 0); + texture_.id, yage::Colour(255, 255, 255, 255), 1); time = (time + 1) % 59; break; } @@ -61,6 +61,11 @@ void Player::idle() action_ = Action::IDLE; } +void Player::look(Direction direction) +{ + direction_ = direction; +} + glm::vec4 Player::position() const { return bound_; diff --git a/examples/shooter/player.h b/examples/shooter/player.h index b8042e71..8b5121c5 100644 --- a/examples/shooter/player.h +++ b/examples/shooter/player.h @@ -1,14 +1,9 @@ #ifndef EXAMPLE_SHOOTER_PLAYER_H #define EXAMPLE_SHOOTER_PLAYER_H -#include "yage/yage.h" +#include -enum class Direction { - LEFT, - DOWN, - RIGHT, - UP, -}; +#include "direction.h" enum class Action { IDLE, @@ -22,10 +17,11 @@ public: void setTexture(const yage::Texture &texture); - void draw(yage::SpriteBatch &sp) const; + void draw(yage::SpriteBatch &sp); void move(Direction direction); void idle(); + void look(Direction direction); // simple getters glm::vec4 position() const; -- cgit From db6480dccd9a3dbf4100a824930a36251f4e743c Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Fri, 5 Jan 2018 15:56:35 +0000 Subject: [Engine] Log levels added to engine. --- examples/resources/textureshader.frag | 2 +- examples/simplegame/main.cpp | 49 +++++++++++++++++++++++++++-------- 2 files changed, 39 insertions(+), 12 deletions(-) (limited to 'examples') diff --git a/examples/resources/textureshader.frag b/examples/resources/textureshader.frag index 1292de96..ae12f4b0 100644 --- a/examples/resources/textureshader.frag +++ b/examples/resources/textureshader.frag @@ -12,5 +12,5 @@ void main() { vec4 texture_colour = texture(texture_sampler, fragment_uv); - colour = texture_colour; + colour = texture_colour * fragment_colour; } diff --git a/examples/simplegame/main.cpp b/examples/simplegame/main.cpp index bd5a05b9..ed6b78f3 100644 --- a/examples/simplegame/main.cpp +++ b/examples/simplegame/main.cpp @@ -8,6 +8,8 @@ #include +#include +#include #include using std::cout; @@ -16,6 +18,9 @@ using namespace yage; int main() { + + Logger logger; + srand(time(nullptr)); Window window; window.create("Simple Game", 1920, 1080); @@ -30,7 +35,7 @@ int main() Texture brick = ResourceManager::getTexture("examples/resources/wall.png"); - cout << "texture: " << brick.width << ", " << brick.height << '\n'; + yLogDebug << "texture: " << brick.width << ", " << brick.height; Camera camera(1920, 1080); textureProgram.use(); @@ -54,23 +59,45 @@ int main() if (window.keyPressed(yage::key::E)) { texture = breast_plate; } + if (window.keyPressed(yage::key::EQUAL)) { + camera.zoom(0.1f); + } + if (window.keyPressed(yage::key::MINUS)) { + camera.zoom(-0.1f); + } + if (window.keyPressed(yage::key::LEFT)) { + camera.move({-5.f, 0.f}); + } + if (window.keyPressed(yage::key::RIGHT)) { + camera.move({5.f, 0.f}); + } + if (window.keyPressed(yage::key::UP)) { + camera.move({0.f, 5.f}); + } + if (window.keyPressed(yage::key::DOWN)) { + camera.move({0.f, -5.f}); + } camera.update(textureProgram); - int amount = 5; - time = glfwGetTime(); - for (int i = 0; i < 1920/amount; i++) { - for(int j = 0; j < 1080/amount; j++) - sp.draw({(float)(amount*i), (float)(amount*j), (float)amount, (float)amount}, {0.f, 0.f, 1.f, 1.f}, fountain.id, - Colour(255, 255, 255, 255), 0); + int amount = 10; + time = glfwGetTime(); + for (int i = 0; i < 1920 / amount; i++) { + for (int j = 0; j < 1080 / amount; j++) + sp.draw({(float)(amount * i), (float)(amount * j), + (float)amount, (float)amount}, + {0.f, 0.f, 1.f, 1.f}, texture.id, + Colour(rand() % 256, rand() % 256, rand() % 256, 255), + 0); } - sp.draw({50, 50, 100, 100}, {0, 0, 1, 1}, brick.id, Colour(255, 255, 255, 255), 1); - yLog << "draw: " << glfwGetTime() - time; + sp.draw({50, 50, 100, 100}, {0, 0, 1, 1}, brick.id, + Colour(255, 255, 255, 255), 1); + yLogDebug << "draw: " << glfwGetTime() - time; time = glfwGetTime(); sp.render(); - yLog << "render: " << glfwGetTime() - time; + yLogDebug << "render: " << glfwGetTime() - time; window.swapBuffer(); if (i == 0) { @@ -78,7 +105,7 @@ int main() diff = final_time - prev_time; prev_time = final_time; fps = 1 / diff * 30; - yLog << "fps: " << fps; + yLogInfo << "fps: " << fps; } i = (i + 1) % 30; } -- cgit From 8b50d7f50ba40e51f7afd4e9c9efa023bc89ba48 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 6 Jan 2018 11:10:52 +0000 Subject: [Engine] Removing whitespace --- examples/resources/learnopenglshader.frag | 2 +- examples/resources/textureshader.vert | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/resources/learnopenglshader.frag b/examples/resources/learnopenglshader.frag index ae3ba3ce..30919459 100644 --- a/examples/resources/learnopenglshader.frag +++ b/examples/resources/learnopenglshader.frag @@ -1,6 +1,6 @@ #version 450 core out vec4 FragColor; - + in vec4 ourColor; in vec2 TexCoord; diff --git a/examples/resources/textureshader.vert b/examples/resources/textureshader.vert index aac246c9..447c68d4 100644 --- a/examples/resources/textureshader.vert +++ b/examples/resources/textureshader.vert @@ -16,5 +16,5 @@ void main() fragment_position = vertex_position; fragment_colour = vertex_colour; - fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); + fragment_uv = vec2(vertex_uv.x, 1-vertex_uv.y); } -- cgit