]> git.lizzy.rs Git - dragonblocks_alpha.git/blobdiff - src/client/game.c
You can now see other players
[dragonblocks_alpha.git] / src / client / game.c
index 99da5785bf41cf6d6d6ab87dfe3af74479315e02..8cd2b7484f081ef755df614b313c8e5a2885ed24 100644 (file)
@@ -7,12 +7,15 @@
 #include <unistd.h>
 #include "client/camera.h"
 #include "client/client.h"
+#include "client/client_entity.h"
 #include "client/client_node.h"
 #include "client/client_player.h"
 #include "client/client_terrain.h"
 #include "client/debug_menu.h"
 #include "client/font.h"
 #include "client/frustum.h"
+#include "client/game.h"
+#include "client/gl_debug.h"
 #include "client/gui.h"
 #include "client/input.h"
 #include "client/sky.h"
@@ -42,21 +45,20 @@ static void crosshair_init()
 
 static void render(f64 dtime)
 {
-       glEnable(GL_DEPTH_TEST);
-       glEnable(GL_ALPHA_TEST);
-       glEnable(GL_BLEND);
-       glEnable(GL_MULTISAMPLE);
-       glEnable(GL_CULL_FACE);
+       glEnable(GL_DEPTH_TEST); GL_DEBUG
+       glEnable(GL_BLEND); GL_DEBUG
+       glEnable(GL_MULTISAMPLE); GL_DEBUG
+       glEnable(GL_CULL_FACE); GL_DEBUG
 
-       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-       glAlphaFunc(GL_GREATER, 0.1f);
-       glCullFace(GL_BACK);
-       glFrontFace(GL_CCW);
+       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); GL_DEBUG
+       glCullFace(GL_BACK); GL_DEBUG
+       glFrontFace(GL_CCW); GL_DEBUG
 
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); GL_DEBUG
 
        frustum_update();
        terrain_gfx_update();
+       client_entity_gfx_update();
 
        sky_render();
        model_scene_render(dtime);
@@ -116,6 +118,11 @@ bool game(Flag *gfx_init)
        if (!terrain_gfx_init())
                return false;
 
+       if (!client_entity_gfx_init())
+               return false;
+
+       client_player_gfx_init();
+
        client_node_init();
        client_terrain_start();
 
@@ -139,6 +146,8 @@ bool game(Flag *gfx_init)
        model_deinit();
        sky_deinit();
        terrain_gfx_deinit();
+       client_entity_gfx_deinit();
+       client_player_gfx_deinit();
 
        return true;
 }
@@ -147,48 +156,48 @@ char *game_take_screenshot()
 {
        // renderbuffer for depth & stencil buffer
        GLuint rbo;
-       glGenRenderbuffers(1, &rbo);
-       glBindRenderbuffer(GL_RENDERBUFFER, rbo);
-       glRenderbufferStorageMultisample(GL_RENDERBUFFER, 8, GL_DEPTH24_STENCIL8, window.width, window.height);
+       glGenRenderbuffers(1, &rbo); GL_DEBUG
+       glBindRenderbuffer(GL_RENDERBUFFER, rbo); GL_DEBUG
+       glRenderbufferStorageMultisample(GL_RENDERBUFFER, 8, GL_DEPTH24_STENCIL8, window.width, window.height); GL_DEBUG
 
        // 2 textures, one with AA, one without
 
        GLuint txos[2];
-       glGenTextures(2, txos);
+       glGenTextures(2, txos); GL_DEBUG
 
-       glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, txos[0]);
-       glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 8, GL_RGB, window.width, window.height, GL_TRUE);
+       glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, txos[0]); GL_DEBUG
+       glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 8, GL_RGB, window.width, window.height, GL_TRUE); GL_DEBUG
 
-       glBindTexture(GL_TEXTURE_2D, txos[1]);
-       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, window.width, window.height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+       glBindTexture(GL_TEXTURE_2D, txos[1]); GL_DEBUG
+       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, window.width, window.height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); GL_DEBUG
 
        // 2 framebuffers, one with AA, one without
 
        GLuint fbos[2];
-       glGenFramebuffers(2, fbos);
+       glGenFramebuffers(2, fbos); GL_DEBUG
 
-       glBindFramebuffer(GL_FRAMEBUFFER, fbos[0]);
-       glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, txos[0], 0);
-       glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo);
+       glBindFramebuffer(GL_FRAMEBUFFER, fbos[0]); GL_DEBUG
+       glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, txos[0], 0); GL_DEBUG
+       glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo); GL_DEBUG
 
-       glBindFramebuffer(GL_FRAMEBUFFER, fbos[1]);
-       glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, txos[1], 0);
+       glBindFramebuffer(GL_FRAMEBUFFER, fbos[1]); GL_DEBUG
+       glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, txos[1], 0); GL_DEBUG
 
        // render scene
-       glBindFramebuffer(GL_FRAMEBUFFER, fbos[0]);
+       glBindFramebuffer(GL_FRAMEBUFFER, fbos[0]); GL_DEBUG
        render(0.0);
-       glBindFramebuffer(GL_FRAMEBUFFER, 0);
+       glBindFramebuffer(GL_FRAMEBUFFER, 0); GL_DEBUG
 
        // blit AA-buffer into no-AA buffer
-       glBindFramebuffer(GL_READ_FRAMEBUFFER, fbos[0]);
-       glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbos[1]);
-       glBlitFramebuffer(0, 0, window.width, window.height, 0, 0, window.width, window.height, GL_COLOR_BUFFER_BIT, GL_NEAREST);
+       glBindFramebuffer(GL_READ_FRAMEBUFFER, fbos[0]); GL_DEBUG
+       glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbos[1]); GL_DEBUG
+       glBlitFramebuffer(0, 0, window.width, window.height, 0, 0, window.width, window.height, GL_COLOR_BUFFER_BIT, GL_NEAREST); GL_DEBUG
 
        // read data
        GLubyte data[window.width * window.height * 3];
-       glBindFramebuffer(GL_FRAMEBUFFER, fbos[1]);
-       glPixelStorei(GL_PACK_ALIGNMENT, 1);
-       glReadPixels(0, 0, window.width, window.height, GL_RGB, GL_UNSIGNED_BYTE, data);
+       glBindFramebuffer(GL_FRAMEBUFFER, fbos[1]); GL_DEBUG
+       glPixelStorei(GL_PACK_ALIGNMENT, 1); GL_DEBUG
+       glReadPixels(0, 0, window.width, window.height, GL_RGB, GL_UNSIGNED_BYTE, data); GL_DEBUG
 
        // create filename
        char filename[BUFSIZ];
@@ -200,9 +209,9 @@ char *game_take_screenshot()
        stbi_write_png(filename, window.width, window.height, 3, data, window.width * 3);
 
        // delete buffers
-       glDeleteRenderbuffers(1, &rbo);
-       glDeleteTextures(2, txos);
-       glDeleteFramebuffers(2, fbos);
+       glDeleteRenderbuffers(1, &rbo); GL_DEBUG
+       glDeleteTextures(2, txos); GL_DEBUG
+       glDeleteFramebuffers(2, fbos); GL_DEBUG
 
        return strdup(filename);
 }