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 +++++++-------- yage/data/renderbatch.h | 2 +- yage/render/spritebatch.cpp | 5 +++-- 7 files changed, 37 insertions(+), 11 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 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(); diff --git a/yage/data/renderbatch.h b/yage/data/renderbatch.h index 0d034035..51521ec5 100644 --- a/yage/data/renderbatch.h +++ b/yage/data/renderbatch.h @@ -9,7 +9,7 @@ struct RenderBatch { GLuint texture; RenderBatch(GLint offset_i, GLsizei num_vertices_i, GLuint texture_i) - : offset(offset_i), num_vertices(num_vertices_i), texture(texture_i = 0) + : offset(offset_i), num_vertices(num_vertices_i), texture(texture_i) { } }; diff --git a/yage/render/spritebatch.cpp b/yage/render/spritebatch.cpp index fb6c3d78..c1bf4a28 100644 --- a/yage/render/spritebatch.cpp +++ b/yage/render/spritebatch.cpp @@ -9,6 +9,7 @@ #include "spritebatch.h" #include +#include #include namespace yage @@ -88,10 +89,9 @@ void SpriteBatch::draw(const glm::vec4 &destination_rect, void SpriteBatch::render() { // sort and create render batches - glBindVertexArray(vao_); sortGlyphs(); createRenderBatches(); - + glBindVertexArray(vao_); for (auto &&batch : render_batches_) { glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, batch.texture); @@ -155,6 +155,7 @@ void SpriteBatch::createRenderBatches() glyph_ptrs_[i - 1]->texture()))) { render_batches_.emplace_back(i * NUM_VERTICES, NUM_VERTICES, glyph_ptrs_[i]->texture()); + } else { render_batches_.back().num_vertices += NUM_VERTICES; } -- cgit