skybox working
[demo] / src / renderer.cc
index 10dd766..e11b973 100644 (file)
@@ -77,6 +77,10 @@ void Renderer::draw() const
        if(!camera || !scene)
                return;
 
+       if(skytex) {
+               draw_skybox();
+       }
+
        if(!sprog->link())
                return;
 
@@ -123,7 +127,7 @@ void Renderer::set_sky_tex(Texture *stex)
        if(!skyprog) {
                if(!(skyprog = sdr_man->create_shader_program("sky.v.glsl", "sky.f.glsl")))
                        return;
-               if((viewproj_loc = skyprog->get_uniform_location("viewproj") == -1))
+               if((viewproj_loc = skyprog->get_uniform_location("mviewproj") == -1))
                        return;
        }
        skytex = stex;
@@ -134,11 +138,14 @@ void Renderer::set_diffuse_sky_tex(Texture *dstex)
        dskytex = dstex;
 }
 
-void Renderer::draw_skybox()
+void Renderer::draw_skybox() const
 {
        if(!skymesh || !skytex)
                return;
 
+       gfx_zbuffer(false);
+       gfx_cull_face(GFX_CULL_NONE);
+
        skytex->bind();
        skyprog->use();
 
@@ -147,4 +154,7 @@ void Renderer::draw_skybox()
        skyprog->set_uniform_matrix(viewproj_loc, mviewproj);
 
        skymesh->draw();
+
+       gfx_cull_face(GFX_CULL_BACK);
+       gfx_zbuffer(true);
 }
\ No newline at end of file