#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"
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);
if (!terrain_gfx_init())
return false;
+ if (!client_entity_gfx_init())
+ return false;
+
+ client_player_gfx_init();
+
client_node_init();
client_terrain_start();
model_deinit();
sky_deinit();
terrain_gfx_deinit();
+ client_entity_gfx_deinit();
+ client_player_gfx_deinit();
return true;
}
{
// 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];
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);
}