]> code.bitgloo.com Git - clyne/gamedev.git/commitdiff
Black bars if world is smaller than screen (messy)
authordrumsetmonkey <abelleisle@roadrunner.com>
Wed, 23 Nov 2016 03:42:34 +0000 (22:42 -0500)
committerdrumsetmonkey <abelleisle@roadrunner.com>
Wed, 23 Nov 2016 03:42:34 +0000 (22:42 -0500)
main.cpp
src/world.cpp

index 10769037e838ea2f992f213563547458f4f06c21..4d141903a848cfd64c43493bc3a48cbc13e1208a 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -320,9 +320,11 @@ void render() {
        if (ui::debug) {
                auto pos = game::engine.getSystem<PlayerSystem>()->getPosition();
                ui::putText(offset.x-SCREEN_WIDTH/2, (offset.y+SCREEN_HEIGHT/2)-ui::fontSize,
-                           "loc: (%+.2f, %+.2f)\nticks: %u\nxml: %s",
+                           "loc: (%+.2f, %+.2f)\noffset: (%+.2f, %+.2f)\nticks: %u\nxml: %s",
                                        pos.x,
                                        pos.y,
+                                       offset.x,
+                                       offset.y,
                                        game::time::getTickCount(),
                                        game::engine.getSystem<WorldSystem>()->getXMLFile().c_str()
                            );
index 02db9cff221ef11be972d1ed073c8e9aa65dd528..62e4f699d96c7943350ec64462e09ec4f5efaac5 100644 (file)
@@ -955,8 +955,50 @@ void WorldSystem::render(void)
            glVertexAttribPointer(Render::worldShader.tex, 2, GL_FLOAT, GL_FALSE, 0, &grasst[0]);
            glDrawArrays(GL_TRIANGLES, 0 , c.size());
 
-       Render::worldShader.disable();
+               // the starting pixel of the world
+               float s = -(static_cast<float>(SCREEN_WIDTH)/2.0f);
+               // the ending pixel of the world
+               float e =  (static_cast<float>(SCREEN_WIDTH)/2.0f);
+
+               if (offset.x + world.startX > s) {
+
+                       glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(0,0,0))); 
+                       glUniform1f(Render::worldShader.uniform[WU_light_impact], 0.0f);
+
+                       GLfloat blackBarLeft[] = {s,                            0.0f,                                                           -3.0f,          0.0f, 0.0f, 
+                                                                         world.startX,         0.0f,                                                           -3.0f,          1.0f, 0.0f,
+                                                                         world.startX,         static_cast<float>(SCREEN_HEIGHT),      -3.0f,          1.0f, 1.0f,
+                                                                         
+                                                                         world.startX,         static_cast<float>(SCREEN_HEIGHT),      -3.0f,          1.0f, 1.0f,
+                                                                 s,                            static_cast<float>(SCREEN_HEIGHT),      -3.0f,          0.0f, 1.0f,
+                                                                         s,                            0.0f,                                                           -3.0f,          0.0f, 0.0f};
+
+               glVertexAttribPointer(Render::worldShader.coord, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat)*5, &blackBarLeft[0]);
+               glVertexAttribPointer(Render::worldShader.tex, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat)*5, &blackBarLeft[3]);
+               glDrawArrays(GL_TRIANGLES, 0 , 6);
+               }
+
+               if (offset.x - world.startX < e) {
+                       
+                       glBindTexture(GL_TEXTURE_2D, Texture::genColor(Color(0,0,0))); 
+                       glUniform1f(Render::worldShader.uniform[WU_light_impact], 0.0f);
+
+                       GLfloat blackBarRight[] = {grassc[grassc.size()-3],     0.0f,                                                           -3.0f,          0.0f, 0.0f, 
+                                                                          e,                                                   0.0f,                                                           -3.0f,          1.0f, 0.0f,
+                                                                          e,                                                   static_cast<float>(SCREEN_HEIGHT),      -3.0f,          1.0f, 1.0f,
+                                                                         
+                                                                          e,                                                   static_cast<float>(SCREEN_HEIGHT),      -3.0f,          1.0f, 1.0f,
+                                                                  grassc[grassc.size()-3],             static_cast<float>(SCREEN_HEIGHT),      -3.0f,          0.0f, 1.0f,
+                                                                          grassc[grassc.size()-3],             0.0f,                                                           -3.0f,          0.0f, 0.0f};
+
+               glVertexAttribPointer(Render::worldShader.coord, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat)*5, &blackBarRight[0]);
+               glVertexAttribPointer(Render::worldShader.tex, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat)*5, &blackBarRight[3]);
+               glDrawArrays(GL_TRIANGLES, 0 , 6);
+               }
+               
+               Render::worldShader.disable();
                Render::worldShader.unuse();
+
        } else {
                Render::useShader(&Render::worldShader);
                Render::worldShader.use();